尝试连接到特定的SQL Server实例并从系统表中获取一些数据。我使用此代码段进行连接:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102;DATABASE=master;INSTANCE=instance1;UID=sql2008;PWD=password123;Trusted_Connection=yes')
...
cursorObj.execute("select * from sys.dm_os_sys_info")
row = cursorObj.fetchone()
print("rows from table ",row)
但是我只获取默认实例的值,但无法获取'instance1'的值。因此,在'INSTANCE = instance1'中给出实例名称似乎没有任何效果。即使没有它(尝试给出'PORT = 1443',实例的端口号),我只获取默认SQL Server实例的值。如何强制它获取特定实例的值?
答案 0 :(得分:16)
首先,您提供uid
/ pwd
(SQL Server身份验证)和trusted_connection
(Windows身份验证)。选择一个,你不能同时使用它们。 我将假设以下示例进行SQL Server身份验证。
使用实例名称
连接到命名实例 instance1connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102\instance1;DATABASE=master;UID=sql2008;PWD=password123')
使用端口号 1443 :
使用TCP / IP连接到命名实例connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102,1443;DATABASE=master;UID=sql2008;PWD=password123')
pyodbc.connect()支持关键字,我认为这些更容易阅读,如果您使用变量连接字符串属性,则不必进行任何字符串格式设置:
命名实例:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102\instance1',
database='master',
uid='sql2008',pwd='password123')
TCP / IP端口:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102,1443',
database='master',
uid='sql2008',pwd='password123')
答案 1 :(得分:-1)
所以已经花了几个小时了,真的很奇怪。 mmv_sat的额外斜杠对我有用,以防其他人使用
Server =“ IP地址...两个正斜杠... instance_name”