8

我已设置 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

有人知道是什么原因造成的吗?

4

6 回答 6

11

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

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

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

它奏效了!

于 2011-08-13T17:04:26.593 回答
9

为了使这个永久存在,我发现我需要编辑freetds.conf文件并在那里全局设置它

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

tds version = 8.0

运行tsql -C仍然显示版本是 5.0,但现在每次都可以连接。

于 2012-03-02T11:38:31.070 回答
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 
于 2012-08-16T23:03:29.430 回答
2

也缺少符号链接(libtdsodbc.so/usr/lib/odbc我来说)

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

应该有帮助

于 2012-11-06T09:12:53.183 回答
1

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

tsql -S myhost -U DOMAIN\\userid
于 2017-07-07T17:02:14.213 回答
0

我遇到了同样的错误。然后我做了以下,错误就消失了:

  1. pip install pyodbc
  2. 以前,我在 TSQL 命令中使用了数据库服务器、用户名和密码的引号。这一次,我删除了引号
于 2019-04-19T16:48:37.330 回答