我试图连接到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实例的值。如何强制它获取特定实例的值?
首先,您要同时提供uid/ pwd(SQL Server身份验证)和trusted_connection(Windows身份验证)。选择一个,不能同时使用。 我将为以下示例假定SQL Server身份验证。
uid
pwd
trusted_connection
使用实例名称连接到命名实例 instance1 :
connSqlServer = 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')