我尝试使用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()
如果有人可以告诉我为什么上面的脚本有时只能工作而且剩下的时间我得到" Adaptive Server连接失败"这对我有很大的帮助。错误。
答案 0 :(得分:6)
我查看了这些旧帖子Read from the server failed when trying to connect to sql-azure from tsql和What is TDS Protocol Version 8.0 and why should I use it?。 这个问题似乎是由使用错误版本的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
您可以尝试使用freetds工具'tsql'来命令“tsql -H <database_name>.database.windows.net -U Username -D DatabaseName -p 1433 -P Password
”来测试与Azure SQL服务器的连接。
最诚挚的问候。