微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FreeTDS连接问题

我正在使用FreeTDS 0.91连接到远程MSsql服务器,但迄今为止所有的尝试都没有成功。

在我的Unix上执行tsql命令时,出现以下错误

locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" Error 20004 (severity 9) Read from the server Failed OS error 104,"Connection reset by peer" Error 20002 (severity 9) Adaptive Server connection Failed There was a problem connecting to the server

freetds.log有以下内容

16:05:49.144905 20207 (log.c:196):Starting log file for FreeTDS 0.91 on 2011-09-28 16:05:49 with debug flags 0xffff. 16:05:49.145281 20207 (iconv.c:330):tds_iconv_open(0x3d29320,UTF-8) 16:05:49.145426 20207 (iconv.c:187):local name for ISO-8859-1 is ISO-8859-1 16:05:49.145448 20207 (iconv.c:187):local name for UTF-8 is UTF-8 16:05:49.145459 20207 (iconv.c:187):local name for UCS-2LE is UCS-2LE 16:05:49.145469 20207 (iconv.c:187):local name for UCS-2BE is UCS-2BE 16:05:49.145479 20207 (iconv.c:349):setting up conversions for client charset "UTF-8" 16:05:49.145489 20207 (iconv.c:351):preparing iconv for "UTF-8" "UCS-2LE" conversion 16:05:49.145508 20207 (iconv.c:391):preparing iconv for "ISO-8859-1" "UCS-2LE" conversion 16:05:49.145533 20207 (iconv.c:394):tds_iconv_open: done 16:05:49.145550 20207 (net.c:205):Connecting to 70.70.218.13 port 2600 (TDS version 7.0) 16:05:49.145686 20207 (net.c:270):tds_open_socket: connect(2) returned "Operation Now in progress" 16:05:49.236008 20207 (net.c:310):tds_open_socket() succeeded 16:05:49.236061 20207 (util.c:156):Changed query state from DEAD to IDLE 16:05:49.236083 20207 (login.c:782):quietly sending TDS 7+ login packet 16:05:49.236173 20207 (token.c:328):tds_process_login_tokens() 16:05:49.857930 20207 (util.c:331):tdserror(0x3d29080,0x3d29320,20004,104) 16:05:49.858072 20207 (util.c:361):tdserror: client library returned TDS_INT_CANCEL(2) 16:05:49.858090 20207 (util.c:384):tdserror: returning TDS_INT_CANCEL(2) 16:05:49.858114 20207 (util.c:156):Changed query state from IDLE to DEAD 16:05:49.858137 20207 (token.c:337):looking for login token,got 0() 16:05:49.858155 20207 (token.c:122):tds_process_default_tokens() marker is 0() 16:05:49.858168 20207 (token.c:125):leaving tds_process_default_tokens() connection dead 16:05:49.858179 20207 (login.c:466):login packet accepted 16:05:49.858189 20207 (util.c:331):tdserror(0x3d29080,20002,0) 16:05:49.858209 20207 (util.c:361):tdserror: client library returned TDS_INT_CANCEL(2) 16:05:49.858220 20207 (util.c:384):tdserror: returning TDS_INT_CANCEL(2) 16:05:49.858232 20207 (mem.c:615):tds_free_all_results()

这是否似乎可能是sql服务器的问题,或者我安装或configurationFreeTDS错误

在freetds-dev中缺lesslibtdsodbc.so – 在Ubuntu上使用MSsql

连接到sql Server 2014的FreeTDS错误

freeTDS不使用其configuration

如何在Ubuntu 12.04中安装mssql

linux pyodbc freeTDS mssql服务器在一段时间后停止工作

所以失去了。 请帮忙。

当我通过telnet连接到服务器时,这是我回复的回应:

尝试70.70.218.13 …

连接到70.70.218.13。

转义字符是'^]'。

^^

外部主机closures连接。

这是否意味着与主机的telnet连接成功?

sql数据库在Windows服务器上运行。 将连接到Windows服务器(就像你通过远程桌面)是用于主机名和端口的正确的值? 或者我必须find一个直接的主机名到Windows服务器上的sql服务器?

Linux和FreeTDS的Microsoft ODBC驱动程序?

FREETDS和UNIXODBC字符转换

Linux和Azure数据库上的freeTDS,login问题

安装sqsh for freetds(sql Server)

Pymssql安装错误

汗。

我刚刚遇到了同样的情况。 我通过添加一个.freetds.conf来解决这个问题,

[global] # TDS protocol version tds version = 7.0

而且我知道这正是大多数FreeTDS连接问题的答案。

而这个方法也是由@Michael Berkowski提供的。

对于五年的死亡表示歉意,当tsql成功地连接到一个开放的端口时,这个错误也会出现,但是这个监听器是sql server以外的一些服务。 看来FreeTDS在登录时并不试图检查它是否与sql server以外的服务通信,所以错误信息是神秘的。 (在我的情况下,我使用远程桌面的端口号。)

如果您不想创建.freetds.conf ,则可以简单地设置TDsveR环境变量(例如,在Windows上使用TDS版本7.3连接到sql server 2008):

set TDsveR=7.3

(用于* nix使用export )。

有关更多环境变量,请参见http://www.freetds.org/userguide/envvar.htm 。

有关不同RDBMS的TDS版本,请参阅http://www.freetds.org/userguide/choosingtdsprotocol.htm

您还可以指定日志文件的路径,通过设置环境变量TDSDUMP可以提供更多的信息,这将有助于排查问题并显示您在哪里查找配置文件。 例如

set TDSDUMP=C:tempfreetds.log

在我的情况下设置TDSDUMP变量显示在日志中的错误

iconv.c:346:setting up conversions for client charset "CP1252;LC_CTYPE=English_United States.1252;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C" iconv.c:348:preparing iconv for "CP1252;LC_CTYPE=English_United States.1252;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C" <-> "UCS-2LE" conversion iconv.c:423:tds_iconv_info_init: client charset name "-1" invalid

显然,FreeTDS没有解析字符串“CP1252; LC_CTYPE = English_United States.1252; LC_MONETARY = C; LC_NUMERIC = C; LC_TIME = C”

我使用以下内容创建了一个.freetds.conf文件

[global] tds version = 7.3 # version 7.3 for MSsql 2008 client charset = UTF-8 # so that we can get unicode characters

并将其保存到C:WindowsSystem32configsystemprofileAppDaTaroaming正如日志文件所建议的那样,它为我解决了这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐