Tôi đang cố kết nối với cơ sở dữ liệu MSSQL từ python trên Linux (SLES).Điều gì gây ra 'không thể kết nối với nguồn dữ liệu' cho pyodbc?
Tôi đã cài đặt pyodbc và TDS miễn phí. Từ dòng lệnh:
tsql -H server -p 1433 -U username -P password
Kết nối đến máy chủ mà không có một vấn đề, tuy nhiên, từ Python:
import pyodbc
pyodbc.connect(driver='{FreeTDS}', server='server', database='database', uid='username', pwd='password')
sản lượng một lỗi:
pyodbc.Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
Tôi đang tìm kiếm lỗi này unhelpfully mơ hồ. Ngay cả một đề xuất để thu hẹp vấn đề sẽ hữu ích ngay bây giờ.
Edit: Nhìn vào TDS log đổ có vẻ như đây là nơi mà toàn bộ điều sụp đổ:
token.c:328:tds_process_login_tokens()
util.c:331:tdserror(0x87bbeb8, 0x8861820, 20017, 115)
odbc.c:2270:msgno 20017 20003
util.c:361:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:384:tdserror: returning TDS_INT_CANCEL(2)
util.c:156:Changed query state from IDLE to DEAD
token.c:337:looking for login token, got 0()
token.c:122:tds_process_default_tokens() marker is 0()
token.c:125:leaving tds_process_default_tokens() connection dead
login.c:466:login packet accepted
util.c:331:tdserror(0x87bbeb8, 0x8861820, 20002, 0)
odbc.c:2270:msgno 20002 20003
util.c:361:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:384:tdserror: returning TDS_INT_CANCEL(2)
mem.c:615:tds_free_all_results()
error.c:412:odbc_errs_add: "Unable to connect to data source"
Điều này thực sự là chính xác. Rất cám ơn – chhantyal