pymssql:有时只能连接数据库

90a*_*yss 5 python azure pymssql

我正在尝试使用Python的pymssql连接到Azure SQL服务器.问题是以下脚本有效,但有时只有,其他时候我收到此错误:

_mssql.MSSQLDatabaseException:(20002,b'DB-Lib错误消息20002,严重性9:\nAdaptive Server连接失败\n')

这是我正在使用的脚本:

import pymssql
conn = pymssql.connect(server='x', user='x', password='x', database='x')
cursor = conn.cursor()
cursor.execute('SELECT * FROM customers');
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]) + " " + str(row[2]))
    row = cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)

如果有人能告诉我为什么上面的脚本有时只能工作而且剩下的时间我得到"Adaptive Server连接失败"错误,这对我有很大的帮助.

Pet*_*Pan 6

我审查了这些那么老线程试图从TSQL连接到SQL-蔚蓝当从服务器读取失败什么是TDS协议版本8.0和我为什么要使用它呢?.这个问题似乎是由使用错误版本的FreeTDS引起的.

我在FreeTDS官方网站http://www.freetds.org/faq.html#Does.FreeTDS.support.Microsoft.servers的页面上找到了密钥.

按产品http://www.freetds.org/userguide/choosingtdsprotocol.htm有一个TDS协议版本表.

在此输入图像描述

出于向后兼容性原因,FreeTDS会将此版本的别名设为7.1,但由于未来的兼容性问题,应该避免这种情况.请参阅下面有关过时版本的说明.

如果你在Linux上使用带有FreeTDS的pymssql,我认为你需要在路径/ etc/freetds /上检查配置文件"freetds.conf".

这是我在下面的Azure SQL Server配置:

# A typical Microsoft server
[egServer70]
        host = <database_name>.database.windows.net
        port = 1433
        tds version = 7.3
Run Code Online (Sandbox Code Playgroud)

您可以尝试使用freetds工具'tsql'来命令' tsql -H <database_name>.database.windows.net -U Username -D DatabaseName -p 1433 -P Password' 来测试与Azure SQL服务器的连接.

最好的祝福.