sql-server - 升级到 Python 3.6 和 SQL Server 2016 后出现 Pymssql 错误 20017

标签 sql-server python-3.x flask pymssql

我们有一个使用 pymssql 的 Flask 应用程序在 Python 2.7 和 SQL Server 2012 下运行了 1.5 年。我们将该应用程序移动到一组新的服务器,并将 Flask 应用程序升级到 Python 3.6,将新的数据库服务器升级到 SQL Server 2016 年。它们都是 Windows 服务器。

从那时起,我们就不断收到间歇性的 20017 错误:

pymssql.OperationalError(20017,b'DB-Lib 错误消息 20017,严重性 9:\n来自服务器的意外 EOF (xx.xx.xx.xx:1433)\nDB-Lib 错误消息 20002,严重性 9:\nAdaptive Server 连接失败 (xx.xx.xx.xx:1433)\n')

只有一小部分调用返回此信息,但足以引起问题。我可以提供我们正在运行的所有内容的特定版本。

提出的一个解决方案是切换到 pyodbc,但我们有数百个查询和存储过程调用,其中许多都带有 UUID,而 pyodbc 处理起来不如 pymssql 干净。

我通过预编译轮 (pymssql-2.1.3-cp36-cp36m-win_amd64) 安装了 pymssql,因为如果没有旧版本,pip 无法构建它。

任何有关调试或修复此问题的想法都会有所帮助。

最佳答案

好吧,我们的答案是切换到 pyodbc。一些实用函数或多或少使它成为剪切和粘贴的过程,但到处都有一些陷阱,但 pymssql 在过去几年中越来越难以构建、升级和使用。

关于sql-server - 升级到 Python 3.6 和 SQL Server 2016 后出现 Pymssql 错误 20017,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46410009/

相关文章:

asp.net - 两个 Azure VM 之间的延迟

Python-是否可以一次打开多个 Chrome 网页?

python - Jinja2 中的 quote_plus URL 编码过滤器

python - 使用 Flask/Postgres 安装 psycopg2

python - 如何在 Python 中使用签名 URL 上传到 Google 存储桶?

sql-server - 根据条件消除 XML 中的行

sql-server - 日期类型输入的语法错误

sql - 如何明智地按一组增加列

python - 类中的可订阅对象

python - 如何在 django 应用程序中获取复选框值