无法使用 FreeTDS ODBC 连接到 SQL 服务器实例
Not able to connect to SQL Server instance with FreeTDS ODBC
我尝试连接到 Microsoft sql 服务器
我将 pyodbc 与 FreeTDS 结合使用。
我的脚本:
import pyodbc
cnxn = pyodbc.connect(
'DRIVER={FreeTDS};SERVER=myServerAdress;INSTANCE =myInstanceName;PORT=myPortNumber;DATABASE=myDatabasename;UID=myUserName;PWD=myPassword')
cursor = cnxn.cursor()
找到服务器但出现错误:
pyodbc.ProgrammingError: ('42000', "[42000] [unixODBC][FreeTDS][SQL Server]Fehler bei der Anmeldung für den Benutzer 'myUserName'. (18456) (SQLDriverConnect)")
我认为翻译后的错误信息是:
Fehler bei der Anmeldung für den Benutzer 'myUserName' = Login failed
for user ‘myUserName’.
所以我认为用户名或密码错误。
但是通过 tsql 使用相同的凭据连接工作正常。
tsql -S MyServerDSN -U myUsername -P myPassword
和
[MyServer]
host = myServername
instance = myInstanceName
工作正常,我可以 select myDatabaseName 并获得结果。
仔细阅读FreeTDS ODBC connection attributes documentation。没有 INSTANCE=
属性。它说
To specify a Microsoft SQL Server instance, use the form server\instance
.
这对我有用:
cnxn_str = (
r'DRIVER=FreeTDS;'
r'SERVER=192.168.1.128\SQLEXPRESS;'
r'DATABASE=myDb;'
r'UID=sa;PWD=whatever;'
)
cnxn = pyodbc.connect(cnxn_str)
另请注意,您应该指定一个实例名称或一个端口号,而不是两者。
我尝试连接到 Microsoft sql 服务器
我将 pyodbc 与 FreeTDS 结合使用。
我的脚本:
import pyodbc
cnxn = pyodbc.connect(
'DRIVER={FreeTDS};SERVER=myServerAdress;INSTANCE =myInstanceName;PORT=myPortNumber;DATABASE=myDatabasename;UID=myUserName;PWD=myPassword')
cursor = cnxn.cursor()
找到服务器但出现错误:
pyodbc.ProgrammingError: ('42000', "[42000] [unixODBC][FreeTDS][SQL Server]Fehler bei der Anmeldung für den Benutzer 'myUserName'. (18456) (SQLDriverConnect)")
我认为翻译后的错误信息是:
Fehler bei der Anmeldung für den Benutzer 'myUserName' = Login failed for user ‘myUserName’.
所以我认为用户名或密码错误。 但是通过 tsql 使用相同的凭据连接工作正常。
tsql -S MyServerDSN -U myUsername -P myPassword
和
[MyServer]
host = myServername
instance = myInstanceName
工作正常,我可以 select myDatabaseName 并获得结果。
仔细阅读FreeTDS ODBC connection attributes documentation。没有 INSTANCE=
属性。它说
To specify a Microsoft SQL Server instance, use the form
server\instance
.
这对我有用:
cnxn_str = (
r'DRIVER=FreeTDS;'
r'SERVER=192.168.1.128\SQLEXPRESS;'
r'DATABASE=myDb;'
r'UID=sa;PWD=whatever;'
)
cnxn = pyodbc.connect(cnxn_str)
另请注意,您应该指定一个实例名称或一个端口号,而不是两者。