连接到 SQL Server 的“意外 EOF”

Posted

技术标签:

【中文标题】连接到 SQL Server 的“意外 EOF”【英文标题】:"Unexpected EOF" connecting to SQL Server 【发布时间】:2013-01-16 20:38:17 【问题描述】:

我正在尝试使用 pymssql 连接到在 Windows Server 2008 上运行的 SQL Server 2012 数据库。

db = pymssql.connect(host='xxx',user='xxx',password='xxx',database='xxx')

但是,我收到以下错误:

OperationalError:(20017,'DB-Lib 错误消息 20017,严重性 9:\n来自服务器的意外 EOF\nDB-Lib 错误消息 20002,严重性 9:\n自适应服务器连接失败\n')

完整的错误是:

Traceback (most recent call last):
  File "XXX.py", line 2, in <module>
    conn = pymssql.connect(host = 'XXX.com', user = 'xxx', password = 'xxx', database = 'xxx')
  File "pymssql.pyx", line 556, in pymssql.connect (pymssql.c:7990)
    raise OperationalError(e[0])
OperationalError: (20017, '\xa0\xff\xaf\x02\x90_\x8d\x02L\xd6\xa7\x02\xda\xad;DB-Lib error message 20017, severity 9:\nUnexpected EOF from the server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n')

有人可以帮我弄清楚发生了什么吗?

【问题讨论】:

你的 Python 脚本在什么操作系统上运行? 操作系统是win32。我通过移动到另一个库来解决问题:pyodbc。效果很好;) 【参考方案1】:

我猜这可能是完全连接失败。我知道它说的是“EOF”,但有时这样的错误消息会产生误导。

我想看看你是否可以首先从你运行脚本的地方ping the host。

其次,我会看看您是否可以在您正在使用的端口上获得tcp connection。

当您使用 https 连接到 http 端口时,我听说过 http 连接出现 EOF 错误。我不确定这是否适用于此。

这是在谷歌上出现的。它可能会有所帮助:

http://sourceforge.net/projects/pymssql/forums/forum/124111/topic/1672338

如果以上所有方法都正常,我会仔细检查用户名和密码是否正确;甚至可能创建一个新用户。

最后,我会检查客户端库和服务器库版本是否兼容。

我希望这会有所帮助。

【讨论】:

【参考方案2】:

pymssql 需要freetds 才能正常工作。在 macOS 上,在首选文本编辑器中打开 /usr/local/etc/freetds.conf,然后更新以下配置:

[global]
# TDS protocol version
# tds version = auto
tds version = 7.0

您可以再试一次,看看错误是否消失。

参考here。

【讨论】:

以上是关于连接到 SQL Server 的“意外 EOF”的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER2008无法连接到服务器

使用 SQL Server Driver 通过 PDO 连接到 SQL Server

IIS无法使用SQL Server身份验证连接到SQL Server

未通过 *** 连接到 SQL Server

如何解决SQL Server 2008 无法连接到

pentaho 本地和远程连接到 sql server