【问题标题】:Not able to connect to SQL Server instance with FreeTDS ODBC无法使用 FreeTDS ODBC 连接到 SQL Server 实例
【发布时间】:2019-02-09 08:29:57
【问题描述】:

我尝试连接到 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)")

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

Fehler bei der Anmeldung für den Benutzer 'myUserName' = 登录失败 对于用户“myUserName”。

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

tsql -S MyServerDSN -U myUsername -P myPassword

[MyServer]
host = myServername
instance = myInstanceName

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

【问题讨论】:

    标签: python sql-server pyodbc freetds


    【解决方案1】:

    仔细阅读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)
    

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

    【讨论】:

    • 非常感谢您的快速帮助。尤其是你的最后一句话,让我有了更多的理解。能够连接。
    • 还要确保数据库已经存在。如果不连接 tsql 并运行 1> CREATE DATABASE myDB; 2> 去
    猜你喜欢
    • 2019-04-24
    • 2019-12-12
    • 2021-08-26
    • 2016-09-29
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多