Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymssql:与数据库的连接有时只起作用_Python_Azure_Pymssql - Fatal编程技术网

Python pymssql:与数据库的连接有时只起作用

Python pymssql:与数据库的连接有时只起作用,python,azure,pymssql,Python,Azure,Pymssql,我正在尝试使用Python的pymssql连接到Azure SQL server。问题是,以下脚本可以工作,但只有在某些时候,其他时候我会出现此错误: _mssql.MSSQLSDatabaseException:(20002,b'DB-Lib错误消息20002,严重性9:\n适配器服务器连接失败\n') 这是我正在使用的脚本: import pymssql conn = pymssql.connect(server='x', user='x', password='x', database='

我正在尝试使用Python的pymssql连接到Azure SQL server。问题是,以下脚本可以工作,但只有在某些时候,其他时候我会出现此错误:

_mssql.MSSQLSDatabaseException:(20002,b'DB-Lib错误消息20002,严重性9:\n适配器服务器连接失败\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 connection failed”(自适应服务器连接失败)错误,这将对我有很大帮助。

我回顾了这些如此古老的线程并进行了分析。 这个问题似乎是由于使用了错误版本的FreeTDS造成的

我在FreeTDS官方网站的页面上找到了钥匙

有一个按产品列出的TDS协议版本表

由于向后兼容性的原因,FreeTDS将把这个版本别名为7.1,但是由于将来的兼容性问题,应该避免这样做。请参阅下面关于过时版本的注释

如果在linux上将pymssql与FreeTDS一起使用,我认为需要检查路径/etc/FreeTDS/处的配置文件“FreeTDS.conf”

以下是我对Azure SQL Server的配置:

# A typical Microsoft server
[egServer70]
        host = <database_name>.database.windows.net
        port = 1433
        tds version = 7.3
#典型的Microsoft服务器
[egServer70]
主机=.database.windows.net
端口=1433
tds版本=7.3
您可以尝试使用freetds工具“tsql”命令“
tsql-H.database.windows.net-U Username-D DatabaseName-p 1433-p Password
”来测试与Azure SQL server的连接


致以最良好的祝愿

谢谢你的回答,非常有用的东西。另一件对我有帮助的事情是使用连接池:你知道为什么这“只是偶尔”会失败吗?我在PHP中使用基于FreeTDS的适配器时也遇到过这种情况,在这种情况下,可能会有1/50的连接尝试因此错误而失败。这似乎很奇怪,我本以为它要么起作用要么不起作用,而不是这种奇怪的偶然失败。这个解决方案似乎已经解决了这个问题,所以非常感谢您提供的信息:-)