我已经设置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
有没有人知道可能导致这种情况的原因?
为了使这个永久化,我发现我需要编辑freetds.conf
文件并在那里全局设置它
vim /usr/local/freetds/etc/freetds.conf
tds version = 8.0
运行tsql -C
仍然显示该版本是5.0但现在连接现在工作。
我想我得到了它,它是TDS配置版本,我有5.0,这导致了错误
尝试运行tsql -C
以检查您使用的是哪个版本,然后您可以调用tsql
覆盖该版本:
TDSVER=7.0 tsql -H hostname -p port -U domain\\\username -P password
它工作了!
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
在libtdsodbc.so
的/usr/lib/odbc
上也缺少符号链接(对我而言)
sudo ln /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so libtdsodbc.so
应该有所帮助
我遇到了同样的问题。在我的情况下,Microsoft SQL Server数据库的用户名是DOMAIN\userid
形式。但是,当我在命令行输入它时,我认为它将斜杠解释为转义字符。当我尝试将斜线放在另一个方向时,它仍然失败了。最后,我尝试在原始方向上放两个斜线并且它起作用。因此以下对我有用:
tsql -S myhost -U DOMAIN\\userid
我遇到了同样的错误。然后我做了以下,错误消失了:
pip install pyodbc