无法使用 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)

另请注意,您应该指定一个实例名称一个端口号,而不是两者。