Pymssql 无法连接到 Amazon Linux 2 上的 Azure SQL Server

Posted

技术标签:

【中文标题】Pymssql 无法连接到 Amazon Linux 2 上的 Azure SQL Server【英文标题】:Pymssql won't connect to Azure SQL Server on Amazon Linux 2 【发布时间】:2019-12-05 11:57:09 【问题描述】:

我知道以前有人问过这个问题,但我已经尝试了所有可以在网上找到的建议,但我仍然感到困惑。

我有一个 python (3.7) 脚本,它使用 pymssql (2.1.4) 与 Azure SQL Server 通信。这在我的本地 macOS 机器上运行良好。当我尝试将它部署到运行 Amazon Linux 2 的 EC2 机器时,问题就来了。当我尝试连接时,我得到:

self.conn = pymssql.connect(server=DBHelper.server, user=DBHelper.user, password=DBHelper.password, database=DBHelper.db)
  File "src/pymssql.pyx", line 642, in pymssql.connect
pymssql.OperationalError: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (myservername.database.windows.net:1433)\n')

FreeTDS 日志是这样写的:

net.c:226:Connecting to 40.121.158.30 port 1433 (TDS version 7.1)
net.c:252:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:372:tds_open_socket() succeeded
packet.c:742:Sending packet
0000 12 01 00 34 00 00 00 00-00 00 15 00 06 01 00 1b |...4.... ........|
0010 00 01 02 00 1c 00 0c 03-00 28 00 04 ff 08 00 01 |........ .(......|
0020 55 00 00 02 4d 53 53 51-4c 53 65 72 76 65 72 00 |U...MSSQ LServer.|
0030 a8 19 00 00            -                        |....|

packet.c:640:Received packet
0000 04 01 00 25 00 00 01 00-00 00 15 00 06 01 00 1b |...%.... ........|
0010 00 01 02 00 1c 00 01 03-00 1d 00 00 ff 0c 00 07 |........ ........|
0020 6c 00 00 03 00         -                        |l....|

login.c:1216:detected flag 3
login.c:534:login packet rejected
query.c:3797:tds_disconnect()

问题是,我可以使用命令行工具 tsql 登录并运行查询。它只是来自python,它不会连接。我正在使用相同的凭据。

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

我放弃并切换到 pyodbc,这似乎有效。显然,pymssql 不再受支持,所以还是使用 pyodbc 更好。

【讨论】:

您可以接受(标记)它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢

以上是关于Pymssql 无法连接到 Amazon Linux 2 上的 Azure SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 pymssql 烧瓶连接到 ms sql 服务器

无法使用 mod_wsgi 从 python wsgi 连接到 pymssql

当无法在多个线程上连接到服务器时,pymssql 的段错误

由于 pymssql 的未知原因,连接到数据库失败

tsql 实用程序 (FreeTDS) 可以连接到 SQL Server,但 pymssql 不能

使用 pymssql 连接到 SQL Server 实例