2015-09-04 5 views
5

Wir verwenden Tdspool und versuchen, mit tsql lokal auf dem gleichen Computer zu verbinden. tdspool scheint seine Verbindungen zu öffnen und hört zu, aber jeder Client, der sich mit dem Pool verbindet, überschreitet das Zeitlimit.Verbindung zu Tdsool Timeout mit 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 

Wann 127.0.0.1:1313 Verbinden sonst die tdspool Ausgabe sagt einfach "zu akzeptieren Verbindung" und nichts mit Tsql. Die freetds.log gibt die folgenden:

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 -C:

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

Antwort

1

Die Software ist Bugged

Wir gingen in die offizielle Mailing-Liste, und stellte diese Frage wörtlich. Die Antwort scheint zu sein, dass es keine gibt, ohne das aktuelle Projekt neu zu schreiben.

Client-Bibliotheken sind verwendet und gut getestet, aber Pool und Server sind wirklich nicht in einer guten Verfassung.

Der aktuelle Zustand von Tdspool ist .... es kompiliert! Ich bin nicht überrascht, dass es nicht korrekt ausgeführt wird.

Das heißt, es ist Open Source. Jede Hilfe/Anregung/Patch ist willkommen.

Wir haben viel Zeit damit verbracht, herauszufinden, was wir falsch gemacht haben, also ist das ein bisschen schmerzhaft. Ich werde zwar versuchen, vorhandene SQL Server-Pools zu erstellen/ändern, bin aber enttäuscht, dass FreeTDS (ein wunderbares Projekt) mit einem solchen instabilen Pool ausgeliefert wird.

1

Ich hatte ähnliches Problem. Wird versuchen, dir zu helfen, dein zu lösen. Erstens sicherzustellen, dass Ihr /etc/freetds.conf enthält gültige Konfiguration:

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

Jetzt /etc/tdspool.conf

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

Dann tdspool sampool sollte in Ordnung beginnen. Meine Fehler waren wie folgt: 1. Ich dachte, dass Server in pool.conf ist IP oder Domäne des Servers, während wirklich das ist Verweis auf Server in freetds.conf 2. In freetds.conf habe ich falsch (zu hoch) tds verwendet Ausführung. Tdspool unterstützt Tds-Versionen bis zu 4.2, wie in ihren Dokumenten angegeben.

Nun, wenn Sie versuchen, über Tsql -S 172.0.0.1:1313 zu verbinden, erhalten Sie immer noch "Verbindung akzeptieren ..." für immer. ABER, wenn Sie

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

tun, werden Sie verbinden und in der Lage sein, Abfragen über SQL Server über Tdspool auszuführen.

+0

Dies funktioniert nicht für mich. Es ist egal, was ich tue, ich bekomme "Verbindung akzeptieren ..." für immer. –

Verwandte Themen