噗嗤。操作错误: ('HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]登录超时已过期 (0) (SQL



使用 SQL Server Management Studio (SSMS) Express,我可以找到数据库并毫无问题地连接。

但是当我使用 pyodbc 通过以下方式连接到同一服务器时:

    import pyodbc
    Server = r"xxxERxxxSQLSERV"
    db = "xxxDB"
    user = "xxx"
    password = "xxxx"
    conn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server + ';DATABASE=' + db +';UID=' + user + ';PWD=' + password)

通过在本地使用 Pyhton,我可以连接,但是当我尝试在 linux 服务器中出现以下错误时

pyodbc.OperationalError: ('HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

我也尝试使用适用于 SQL Server 的 ODBC 驱动程序 17,但面临同样的问题。任何人都可以就此建议我吗?

Microsoft 的 SQL Server ODBC 驱动程序无法解析实例名称。您可以使用免费的 sqlserverport 模块获取相应的端口号并使用该端口号进行连接。

尝试从服务器中删除实例并将其设置为

Server = "xxxER"

或者,如果您有端口号,请将其附加为

Server = "xxxER,portNo"

我有这个问题,并在这里解决了我的问题。只需添加版本。

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server + ';DATABASE=' + db +';UID=' + user + ';PWD=' + password)

如果不起作用,请将版本 17 更改为 13 如果不是 11 .列出 ODBC 的版本。

检查您的 mssql 网络配置,我的问题就在那里。

为所有 IP 启用端口 1433。

现在正在使用 IP 和主机名。

我正在使用带有远程服务器端口转发到本地主机的SSH隧道,1433。如果使用以下方法,则此 pyodbc 连接会间歇性失败:

cnxn = pyodbc.connect('driver={ODBC Driver 17 for SQL Server};Server=localhost, 1433;'...

用 127.0.0.1 替换本地主机似乎一直在工作

cnxn = pyodbc.connect('driver={ODBC Driver 17 for SQL Server};服务器=127.0.0.1, 1433;

顺便说一下,使用Ruby和FreeTDS也做了同样的事情,Localhost,1433一直在工作。必须是 pyodbc 包中的东西或其方法,有时会删除一些信息以使服务器上的 DBMS 无法响应/超时

这对我有用:

mssql://DRIVER={ODBC Driver 17 for SQL Server};SERVER={server_address,PORT};DATABASE=<my_database>;UID=<my_username>;PWD=<my_password>

最新更新