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

4

我尝试连接到 Microsoft SQL Server。

我使用带有 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)")

我认为翻译后的错误信息是:

用户 'myUserName' 的登录失败 = Login failed for user ‘myUserName’。

因此,我认为用户名或密码错误。 但使用相同的凭据通过tsql连接正常。

tsql -S MyServerDSN -U myUsername -P myPassword

使用

[MyServer]
host = myServername
instance = myInstanceName

程序正常运行,我可以选择我的数据库名称并获得结果。

1个回答

3
请仔细阅读FreeTDS ODBC连接属性文档。其中没有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)

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

1
非常感谢您的快速帮助。特别是您最后一句话让我更加理解,我已经成功连接了。 - HrkBrkkl
请确保数据库已经存在。如果不存在,请使用tsql连接并运行以下命令: 1> CREATE DATABASE myDB; 2> go - Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接