2015-09-04 10 views
5

Si utilizza tdspool e si tenta di connettersi ad esso utilizzando tsql localmente sulla stessa macchina. tdspool sembra aprire le sue connessioni bene e inizia ad ascoltare, ma ogni client che si connette al pool va in timeout.connessione a tdsool timeout con tsql

pool.conf

[global] 
     min pool conn = 5 
     max pool conn = 10 
     max member age = 120 

[sampool] 
     user = [REDACTED] 
     password = [REDACTED] 
     database = [REDACTED] 
     server = [REDACTED] 
     port = 1313 ;change to a non standard port so we can see the connection details in the debug log 

Durante la connessione a 127.0.0.1:1313 utilizzando TSQL l'uscita tdspool dice semplicemente "accettando connessione" e nient'altro. Il freetds.log emette il seguente: -C

dblib.c:1237:tdsdbopen: Calling tds_connect_and_login(0x2b3fec0, 0x2b40580) 
iconv.c:328:tds_iconv_open(0x2b3fec0, UTF-8) 
iconv.c:187:local name for ISO-8859-1 is ISO-8859-1 
iconv.c:187:local name for UTF-8 is UTF-8 
iconv.c:187:local name for UCS-2LE is UCS-2LE 
iconv.c:187:local name for UCS-2BE is UCS-2BE 
iconv.c:346:setting up conversions for client charset "UTF-8" 
iconv.c:348:preparing iconv for "UTF-8" <-> "UCS-2LE" conversion 
iconv.c:395:preparing iconv for "ISO-8859-1" <-> "UCS-2LE" conversion 
iconv.c:400:tds_iconv_open: done 
net.c:202:Connecting to 127.0.0.1 port 1313 (TDS version 7.3) 
net.c:274:tds_open_socket: connect(2) returned "Operation now in progress" 
net.c:313:tds_open_socket() succeeded 
util.c:165:Changed query state from DEAD to IDLE 
packet.c:740:Sending packet 
0000 12 01 00 3a 00 00 00 00-00 00 1a 00 06 01 00 20 |...:.... ....... | 
0010 00 01 02 00 21 00 0c 03-00 2d 00 04 04 00 31 00 |....!... .-....1.| 
0020 01 ff 09 00 00 00 00 00-02 4d 53 53 51 4c 53 65 |........ .MSSQLSe| 
0030 72 76 65 72 00 96 24 00-00 00     |rver..$. ..| 

util.c:322:tdserror(0x2a6b8c0, 0x2b3fec0, 20003, 115) 
dblib.c:7897:dbperror(0x2b3f3b0, 20003, 115) 
dblib.c:7965:dbperror: Calling dblib_err_handler with msgno = 20003; msg->msgtext = "Adaptive Server connection timed out (127.0.0.1:1313)" 
dblib.c:5743:dbgetuserdata(0x2b3f3b0) 
dblib.c:7987:dbperror: dblib_err_handler for msgno = 20003; msg->msgtext = "Adaptive Server connection timed out (127.0.0.1:1313)" -- returns 2 (INT_CANCEL) 
util.c:352:tdserror: client library returned TDS_INT_CANCEL(2) 
util.c:375:tdserror: returning TDS_INT_CANCEL(2) 
query.c:3769:tds_disconnect() 
util.c:165:Changed query state from IDLE to DEAD 
login.c:472:login packet rejected 
util.c:322:tdserror(0x2a6b8c0, 0x2b3fec0, 20002, 0) 
dblib.c:7897:dbperror(0x2b3f3b0, 20002, 0) 
dblib.c:7965:dbperror: Calling dblib_err_handler with msgno = 20002; msg->msgtext = "Adaptive Server connection failed (127.0.0.1:1313)" 
dblib.c:5743:dbgetuserdata(0x2b3f3b0) 
dblib.c:7987:dbperror: dblib_err_handler for msgno = 20002; msg->msgtext = "Adaptive Server connection failed (127.0.0.1:1313)" -- returns 2 (INT_CANCEL) 
util.c:352:tdserror: client library returned TDS_INT_CANCEL(2) 
util.c:375:tdserror: returning TDS_INT_CANCEL(2) 
dblib.c:1241:tdsdbopen: tds_connect_and_login failed for "127.0.0.1:1313"! 
dblib.c:1463:dbclose(0x2b3f3b0) 
dblib.c:243:dblib_del_connection(0x7fa27f9644a0, 0x2b3fec0) 
mem.c:648:tds_free_all_results() 
dblib.c:290:dblib_release_tds_ctx(1) 
dblib.c:5845:dbfreebuf(0x2b3f3b0) 
dblib.c:743:dbloginfree(0x2b3ef10) 
dblib.c:1533:dbexit(void) 
dblib.c:1533:dbexit(void) 
dblib.c:290:dblib_release_tds_ctx(1) 

tsql:

Version: freetds v0.95.19 
      freetds.conf directory: /etc 
    MS db-lib source compatibility: yes 
     Sybase binary compatibility: no 
         Thread safety: yes 
         iconv library: yes 
         TDS version: 5.0 
           iODBC: no 
          unixodbc: yes 
       SSPI "trusted" logins: no 
          Kerberos: no 
          OpenSSL: no 
          GnuTLS: no 

OS: CentOS 6.5

risposta

1

Il Software è Bugged

Siamo andati alla mailing list ufficiale, e ha chiesto questa domanda testualmente. La risposta sembra essere che non ce n'è uno senza riscrivere il progetto corrente.

Le librerie client sono utilizzate e ben testate, ma pool e server sono davvero non in una buona forma.

Lo stato attuale di tdspool è .... Compila! Non sono sorpreso che non funzioni correttamente.

Detto questo è open source. Qualsiasi aiuto/suggerimento/patch è benvenuto.

Abbiamo trascorso molto tempo a cercare di capire cosa stessimo facendo male, quindi questo è un po 'un dolore. Mentre cercherò di modificare/modificare i pool di SQL Server esistenti, sono deluso dal fatto che FreeTDS (un progetto meraviglioso) sia fornito con un pool così instabile

1

Ho avuto problemi simili. Cercherò di aiutarti a risolvere il tuo. In primo luogo, garantire la vostra /etc/freetds.conf contiene configurazione valida:

[global] 
tds version = 4.2 
... 
[myserver] 
    host = <ip> 
    port = 1433 
    tds version = 4.2 < this is important 

Ora, /etc/tdspool.conf

[sampool] 
user = [REDACTED] 
password = [REDACTED] 
database = [REDACTED] 
server = myserver < important 
port = 1313 

Poi tdspool sampool dovrebbe iniziare bene. I miei errori erano i seguenti: 1. Ho pensato che il server in pool.conf sia ip o dominio del server, mentre in realtà si tratta di server in freetds.conf 2. In freetds.conf ho usato tds errato (troppo alto) versione. Tdspool supporta versioni di tds fino a 4.2, come dichiarato nei loro documenti.

Ora, se si tenta di connettersi tramite tsql -S 172.0.0.1:1313, si otterrà comunque "accettazione della connessione ..." per sempre. MA, se lo fai

tsql -S 127.0.0.1:1313 -U <username> -P <password> -D <database> 

ti connetteresti e sarai in grado di eseguire query sul tuo server sql tramite tdspool.

+0

Questo non funziona per me. Non importa quello che faccio, ottengo "accettare la connessione ..." per sempre. –

Problemi correlati