无法使用FreeTDS ODBC连接到SQL Server实例

时间:2018-09-04 10:20:13

标签: python sql-server pyodbc freetds

我尝试连接到Microsoft sql服务器

我在FreeTDS上使用pyodbc。

我的脚本:

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 Anmeldungfürden Benutzer'myUserName'=登录失败   用户“ myUserName”。

所以我认为用户名或密码错误。 但是通过tsql使用相同的凭据进行连接就可以了。

tsql -S MyServerDSN -U myUsername -P myPassword

使用

[MyServer]
host = myServername
instance = myInstanceName

工作正常,我可以选择myDatabaseName并获取结果。

1 个答案:

答案 0 :(得分:2)

仔细阅读FreeTDS ODBC connection attributes documentation。没有INSTANCE=属性。它说

  

要指定Microsoft SQL Server实例,请使用格式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)

请注意,您应该指定实例名称端口号,而不要同时指定两者。