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認証)の両方を提供します。 1つを選択してください。両方を使用することはできません。 次の例では、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')
ポート番号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')