python pyodbc: как подключиться к определенному экземпляру

Я пытаюсь подключиться к определенному экземпляру 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 по умолчанию. Как заставить его получить значения для конкретного экземпляра?

1 ответов


проверка подлинности

во-первых, вы обеспечиваете как uid/pwd (проверка подлинности SQL Server) и trusted_connection (проверка подлинности Windows). Выбрать один, вы не можете использовать оба. я предположу проверку подлинности SQL Server для следующих примеров.

строк подключения

подключение к именованному экземпляру instance1 использование имени экземпляра:

connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102\instance1;DATABASE=master;UID=sql2008;PWD=password123')

подключение к именованному экземпляру с помощью TCP / IP с использованием номера порта 1443:

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')