본문 바로가기
파이썬

파이썬 python pyodbc : 특정 인스턴스에 연결하는 방법

by º기록 2020. 12. 9.
반응형

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 인증을 가정합니다.

인스턴스 이름을 사용하여 명명 된 인스턴스 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')


명명 된 인스턴스 :

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

 

참조 페이지 https://stackoverflow.com/questions/25505081

 

 

반응형

댓글