连接到Mac上的SQL Server的FreeTDS问题(来自服务器的意外EOF)

时间:2011-08-07 14:28:38

标签: sql-server ruby-on-rails-3 freetds

我已经设置FreeTDS连接到SQL Server数据库。当我尝试在Mac(Lion)上的终端中打开TSQL时,我收到此错误:

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 20017 (severity 9):
    Unexpected EOF from the server
    OS error 36, "Operation now in progress"
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server

有没有人知道可能导致这种情况的原因?

6 个答案:

答案 0 :(得分:11)

我想我明白了,它是TDS配置的版本,我有5.0,导致错误

尝试运行tsql -C以检查您使用的是哪个版本,然后您可以调用tsql覆盖版本:

TDSVER=7.0 tsql -H hostname -p port -U domain\\\username -P password

它有效!

答案 1 :(得分:9)

为了制作这个permenant我发现我需要编辑freetds.conf文件并在那里全局设置

vim /usr/local/freetds/etc/freetds.conf

tds version = 8.0

正在运行tsql -C仍然显示该版本为5.0,但现在每次都在连接。

答案 2 :(得分:8)

TDS版本需要匹配正确的tds协议才能连接到您的数据库服务器,请参阅下面的内容 -

http://www.freetds.org/userguide/choosingtdsprotocol.htm

选择TDS协议版本

***DB SERVER        |    TDS VERSION ***    
Microsoft SQL Server 6.x    = 4.2       
Sybase System 10 and above  = 5.0       
Sybase System SQL Anywhere  = 5.0     
Microsoft SQL Server 7.0    = 7.0       
Microsoft SQL Server 2000   = 7.1       
Microsoft SQL Server 2005   = 7.2   
Microsoft SQL Server 2008   = 7.2 

答案 3 :(得分:2)

libtdsodbc.so /usr/lib/odbc(对我来说){/ 1}}上也缺少符号链接

sudo ln /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so libtdsodbc.so 

应该帮助

答案 4 :(得分:0)

我遇到了同样的问题。在我的情况下,Microsoft SQL Server数据库的用户名格式为DOMAIN\userid。但是,当我在命令行输入它时,我认为它将斜杠解释为转义字符。当我尝试将斜线放在另一个方向时,它仍然失败了。最后,我尝试在原始方向上放两个斜线并且它起作用。因此以下对我有用:

tsql -S myhost -U DOMAIN\\userid

答案 5 :(得分:0)

我遇到了同样的错误。然后我执行了以下操作,错误消失了:

  1. pip install pyodbc
  2. 以前,我在TSQL命令中使用了数据库服务器,用户名和pwd的引号。这次,我删除了引号