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

问题描述 投票:3回答:1

我尝试连接到microsoft sql server

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

我认为翻译的错误消息是:

用户'myUserName'登录失败=用户'myUserName'登录失败。

所以我认为用户名或密码错了。但是通过tsql连接相同的凭据可以正常工作。

tsql -S MyServerDSN -U myUsername -P myPassword

[MyServer]
host = myServername
instance = myInstanceName

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

python sql-server pyodbc freetds
1个回答
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)

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

© www.soinside.com 2019 - 2024. All rights reserved.