我目前可以连接到我的SQL服务器并直接查询任何我想查询的数据库。
问题是当我想查询一个链接服务器时。我不能在
connect()
方法中直接引用链接服务器的名称,我必须先连接到一个本地数据库,然后针对链接服务器运行
OPENQUERY()
。
这似乎是一个奇怪的解决方法。有没有一种方法可以直接查询链接的服务器?
(根据我的研究,你不能直接连接到一个链接的服务器。)
或者至少在不指定数据库的情况下连接到服务器,然后我可以运行
OPENQUERY()
,而不必先连接到数据库?
我目前要做的事情的例子。
import pyodbc
ex_value = "SELECT * FROM OPENQUERY(LinkedServerName,'SELECT * FROM LinkedServerName.SomeTable')"
# I have to connect to some local database on the server and cannot connect to linked server initially.
odbc_driver, server, db = '{ODBC Driver 17 for SQL Server}', 'MyServerName', 'LocalDatabase'
with pyodbc.connect(driver=odbc_driver, host=server, database=db, trusted_connection='yes') as conn:
conn.autocommit = False
cursor = conn.cursor()
cursor.execute(ex_value)
tables = cursor.fetchall()
for row in tables:
print('Row: {}'.format(row))
cursor.close()