python - 与 pyodbc 到镜像 MS SQL Server 的第二次连接出现段错误

标签 python sql-server segmentation-fault pyodbc database-mirroring

我遇到了连接到镜像 MS SQL 服务器数据库的 Python 脚本的问题。当我第二次尝试连接到数据库时,它抛出了一个段错误。应用服务器和数据库实例都在 Google Compute Engine 上运行。

下面是一些复制问题的代码:

import pyodbc

params = {
   'autocommit': True,
   'uid': 'myuser',
   'tds_version': '8.0',
   'DRIVER': '{mssql}',
   'pwd': 'mypassword',
   'server': 'sql-server-01',
   'database': 'mydb',
   'port': 1433,
}

c1 = pyodbc.connect(**params)
c2 = pyodbc.connect(**params)

第一个连接 (c1) 成功,但第二个连接 (c2) 立即失败并出现段错误。 “mydb”被镜像到第二台服务器(sql-server-02)。 使用非镜像数据库,或禁用此数据库的镜像,使其消失。

我们已尝试升级多个库,但未能解决问题。 版本:

  • Microsoft SQL Server:12.00.2000(最新)
  • python :2.7.6
  • pyodbc:3.0.10(最新)
  • unixODBC:2.2.14p2-5ubuntu5、2.3.0、2.3.4(最新)
  • RedHat 的 MS ODBC 驱动程序:11.0.1790.0、11.0.2270.0(最新)

要在此处添加,执行相同步骤的 Java 代码工作正常。

有什么想法吗?

最佳答案

MSODBC 驱动程序有很多已知问题,尤其是在多线程方面。听起来你遇到了这个。我用 Django 的运行服务器遇到了它;它只适用于 Django 的运行服务器的 --nothreading 选项(并且仍然存在 SQLRowCount 中的错误)。

幸运的是,Microsoft 现在正在组建一个团队来开发性能更好、更可靠的驱动程序(谢谢 MS!)。同时,我使用 FreeTDS 0.95(最高支持 TDS 7.3 版,一个 la SQL Server 2008),它对我很好。试试看?祝你好运。

关于python - 与 pyodbc 到镜像 MS SQL Server 的第二次连接出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047612/

相关文章:

python - 修改matplotlib patchcollecton3d数据

python - 在遍历那个确切的 List 的同时对 List 中的所有元素求和

python - 如何将 int numpy 数组的列乘以 float 数字并保持为 int?

sql-server - SQL批量复制中的异常和内存问题

sql-server - 根据列查找日期范围

c - 调用 free() 时出现段错误

c++ - 用于 Windows 的 python ncreduce

sql - 如何选择每个类别中价格最高的产品?

c - TCP-IP套接字C : Bad address error when trying to connect to server socket

清除二叉搜索树时的 C++ 段错误