2011-04-20 93 views
2

我正在使用安裝在OS X Snow Leopard上的FreeTDS 0.82連接到SQL Server 2005數據庫。FreeTDS顯示來自服務器的意外EOF

當我嘗試使用TSQL連接,我得到這個:

tsql -S abc -U uuu 
locale is "en_US.UTF-8" 
locale charset is "UTF-8" 
Password: 
Msg 20017, Level 9, State -1, Server OpenClient, Line -1 
Unexpected EOF from the server 
Msg 20002, Level 9, State -1, Server OpenClient, Line -1 
Adaptive Server connection failed 
There was a problem connecting to the serve 

freetds.conf:

[abc] 
     Host = host.host.domain 
     port = 1433 
     tds version = 8.0 

日誌文件:

13:02:23.904572 97429 (log.c:190):Starting log file for FreeTDS 0.82 on 2011-04-20 13:02:23 with debug flags 0xffff. 
13:02:23.904657 97429 (iconv.c:197):names for ISO-8859-1: ISO-8859-1 
13:02:23.904669 97429 (iconv.c:197):names for UTF-8: UTF-8 
13:02:23.904678 97429 (iconv.c:197):names for UCS-2LE: UCS-2LE 
13:02:23.904686 97429 (iconv.c:197):names for UCS-2BE: UCS-2BE 
13:02:23.904694 97429 (iconv.c:363):iconv to convert client-side data to the "UTF-8" character set 
13:02:23.904715 97429 (iconv.c:516):tds_iconv_info_init: converting "UTF-8"->"UCS-2LE" 
13:02:23.904729 97429 (iconv.c:516):tds_iconv_info_init: converting "ISO-8859-1"->"UCS-2LE" 
13:02:23.904744 97429 (net.c:210):Connecting to 174.46.169.40 port 1433 (TDS version 8.0) 
13:02:23.904847 97429 (net.c:264):tds_open_socket: connect(2) returned "Operation now in progress" 
13:02:23.966370 97429 (net.c:303):tds_open_socket() succeeded 
13:02:23.966422 97429 (util.c:162):Changed query state from DEAD to IDLE 
13:02:23.966433 97429 (login.c:735):quietly sending TDS 7+ login packet 
13:02:23.966481 97429 (token.c:312):tds_process_login_tokens() 
13:02:24.036207 97429 (util.c:334):tdserror(0x1001001d0, 0x100100840, 20017, 0) 
13:02:24.036286 97429 (util.c:368):tdserror: client library returned TDS_INT_CANCEL(2) 
13:02:24.036300 97429 (util.c:389):tdserror: returning TDS_INT_CANCEL(2) 
13:02:24.036327 97429 (util.c:162):Changed query state from IDLE to DEAD 
13:02:24.036338 97429 (token.c:316):looking for login token, got 0() 
13:02:24.036478 97429 (token.c:108):tds_process_default_tokens() marker is 0() 
13:02:24.036494 97429 (token.c:111):leaving tds_process_default_tokens() connection dead 
13:02:24.036504 97429 (util.c:334):tdserror(0x1001001d0, 0x100100840, 20002, 0) 
13:02:24.036614 97429 (util.c:368):tdserror: client library returned TDS_INT_CANCEL(2) 
13:02:24.036626 97429 (util.c:389):tdserror: returning TDS_INT_CANCEL(2) 
13:02:24.036639 97429 (mem.c:563):tds_free_all_results() 

我已經試過7.2版本,7等,他們都顯示相同的東西。

+0

這是否得到解決?我有同樣的問題。 – 2011-08-13 19:16:15

回答

2

嘗試用

tds version = 7.0 

或者設置以下環境變量:

TDSVER="7.0" 

另外,還要確保該端口是正確的,它可能會因編譯時的設置。你也可以在環境中設置:

TDSPORT="1433" 
0

我明顯遇到了freetds.conf的問題。在freetds.conf中設置tds version = 8.0不起作用,在轉儲日誌中,授權步驟後它一直髮送INT CANCEL。我的PHP文件結束了最後看起來像這樣(在freetds.conf數據庫和端口設置工作得很好......不知道爲什麼TDS版本沒有):

putenv('TDSVER=8.0');<br /> 
putenv('TDSDUMP=tds.log');<Br /> 
putenv('FREETDSCONF=freetds.conf');<br /> 
putenv('FREETDS=freetds.conf'); 
1
client charset = ISO-8859-1 

freetds.conf上解決了這個問題OSX 10.8。/freetds的0.91

+0

此評論幫助了我。我設置字符集utf-8和數據庫預計UTF-8 – nurettin 2017-08-27 12:11:59

1

我嘗試用MacOSX的freetds的:

我發現,我在/這是壓倒一切的主要freetds.conf

用戶一個.freetds.conf文件中刪除.freetds後.conf文件都OK了

RM /Users/user/.freetds.conf

主要文件:

sudo的VI /選擇/本地/ etc/freetd s/freetds.conf

+0

感謝您的!互聯網上的一些文檔/教程告訴你mod /usr/local/etc/freetds.conf,而不是/ opt/local/etc/freetds/ – 2014-06-07 07:16:35

1

在應用了Linux和MS修補程序後,我們間歇性地發生了此錯誤。我們仍然可以從Linux連接到MSSQL服務器,但隨機我們的連接將終止EOF錯誤...即使在查詢中。我打開freetds的日誌,看到加密握手失敗是這樣的:

net.c:1366:handshake failed: A TLS packet with unexpected length was received.   
    login.c:466:login packet rejected 
    util.c:331:tdserror(0x1e752b0, 0x2c27f40, 20002, 0) 

我們推出的微軟Windows服務器運行我們的MS SQL Server數據庫2008 R2服務器上回KB3172605多後故障排除......它解決了問題。

+0

中的那個,我們使用的是freetds 0.91。看起來像從源安裝freetds 1.00.15也會解決這個問題。 – 2016-09-28 14:34:13