[Microsoft][SQL 服务器的 ODBC 驱动程序 17] 登录超时已过期 (0) (SQLDriverConnect)')

[Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

我无法使用 python 从 Unix 连接到 SQL 服务器。

由于其他依赖关系,我无法将 SQL 服务器的 ODBC 驱动程序 17 替换为 SQL 服务器的 ODBC 驱动程序 13,如 中所述。

有人可以推荐一个替代方案吗?

代码:

import sqlalchemy as sa

from urllib import parse as db_parse

from sqlalchemy import event

params = db_parse.quote_plus(r"DRIVER={ODBC Driver 17 for SQL Server};SERVER='server,port';DATABASE=DB_NAME;username=USER_ID;password=PWD;Trusted_Connection=yes")

engine = sa.create_engine('mssql+pyodbc:///?odbc_connect={}'.format(params))

connection = engine.connect()

错误:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/e3q8)

我的连接字符串看起来不一样:

"DRIVER={ODBC Driver 17 for SQL Server};SERVER=myserver;DATABASE=mydb;UID=myuser;PWD=mypassword"

利兹

import pyodbc
connection = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};SERVER=myserver;DATABASE=mydb;UID=myuser;PWD=mypassword", autocommit=True)

您使用用户名等而不是 UID。所有以 'my' 开头的单词都必须替换为实际的数据库、用户和密码。正如 Panagiotis Kanavos 在评论中指出的那样,您还应该删除 Trusted_Connection=True; 部分。这表示您正在使用 windows-user 进行身份验证(这显然在 linux 上不可用)。