TDS-Protokoll mit Fehlermeldung beim pre-login zum MS SQL Server

Oakwoodinc

Benutzer
Beiträge
5
Wir versuchen von einer Anwendung heraus, die auf einer virtuellen Maschine installiert ist, eine Verbindung zu einer SQL-Datenbank als Teil
eines AWS RDS in der Cloud herzustellen.

Zwischen dem Quell- und dem Zielsystem befinden sich mehrere Router und Firewalls und die Quell-IP-Adresse wird durch NAT verändert.

Ein TCP-Verbindungstest in PowerShell funktioniert:

Connection Test in PowerShell_NEU.png

Wenn jedoch versucht wird, eine Verbindung zur Datenbank mit einer Verbindungsstring aus der Anwendung heraus herzustellen,
wird folgende unspezifische TDS-Fehlermeldung vor dem Pre-Login-Handshake angezeigt.

Handshake error TDS.png

Auch eine Erfassung des Datenverkehrs mit Wireshark brachte keine eindeutige Lösung für diesen Fehler.

Wir haben auch die Verbindung zur Datenbank von SSMS (SQL Server Management Studio) aus getestet,
und es erscheint die gleiche Fehlermeldung.

Es ist also nicht auf eine bestimmte Anwendung zurückzuführen.

Beim Testen der Verbindung von einer anderen virtuellen Maschine aus, tritt das Problem nicht auf.
Diese befindet sich technisch aber auf einer anderen Infrastruktur.

Ich vermute, dass der SQL Server diese Pre-Login-Message nicht versteht und die Verbindung abbricht.

Weiß jemand, wie man diese Pre-Login-Message analysieren kann, um weitere mögliche Lösungen abzuleiten?

Offizielle Details von Microsoft zur Pre-Login-Message als Teil des TDS-Protokoll findet man hier:
[MS-TDS]: PRELOGIN

Hier noch ein weiterer Link der die Funktionsweise des TDS-Protokoll vereinfacht erklärt:
Tabular Data Stream (TDS) Protocol

Danke
 
Werbung:
Hab keine Ahnung von TDS und auch keine Lust, MS Kram zu analsysieren.
Eine Firewall verarbeitet in ihren Regeln auch Ports, ist das berücksichtigt?
Und wie gesagt, weiß nicht was TDS macht, vielleicht ist UDP im Spiel? Das müsste dann auch in den Firewalls berücksichtigt werden.
 
Sowas habe ich auch noch nie gemacht. Aber bei Cloud-Lösungen finde ich sollte der Hoster Ansprechpartner sein und ich glaube AWS SQL ist auch nicht so billig wie der Rest. Schonmal bei AWS ein Ticket auf gemacht?
 
Ich habe jetzt die folgende SQL-Fehlermeldung aus dem SQL-Audit-Log:

Network error code 0x274c occurred while establishing a connection; the connection has been closed.

This may have been caused by client or server login timeout expiration. Time spent during login:

total 40096 ms, enqueued 0 ms, network writes 0 ms, network reads 40096 ms, establishing SSL 0 ms,
network reads during SSL 0 ms, network writes during SSL 0 ms, secure calls during SSL 0 ms,
enqueued during SSL 0 ms, negotiating SSPI 0 ms, network reads during SSPI 0 ms, network
writes during SSPI 0 ms, secure calls during SSPI 0 ms, enqueued during SSPI 0 ms,
validating login 0 ms, including user-defined login processing 0 ms.
 
Hab keine Ahnung von TDS und auch keine Lust, MS Kram zu analsysieren.
Eine Firewall verarbeitet in ihren Regeln auch Ports, ist das berücksichtigt?
Und wie gesagt, weiß nicht was TDS macht, vielleicht ist UDP im Spiel? Das müsste dann auch in den Firewalls berücksichtigt werden.
Dann braucht man auch nix posten, nicht wahr.
 
Es ist also nicht auf eine bestimmte Anwendung zurückzuführen.

Beim Testen der Verbindung von einer anderen virtuellen Maschine aus, tritt das Problem nicht auf.
Diese befindet sich technisch aber auf einer anderen Infrastruktur.

Ich vermute, dass der SQL Server diese Pre-Login-Message nicht versteht und die Verbindung abbricht.

Weiß jemand, wie man diese Pre-Login-Message analysieren kann, um weitere mögliche Lösungen abzuleiten?

Offizielle Details von Microsoft zur Pre-Login-Message als Teil des TDS-Protokoll findet man hier:
[MS-TDS]: PRELOGIN

Hier noch ein weiterer Link der die Funktionsweise des TDS-Protokoll vereinfacht erklärt:
Tabular Data Stream (TDS) Protocol

Danke
So wie ich TDS verstanden habe wird das IMMER genutzt um die Daten zwischen SQL Server und Client hin und her zu schieben. Was ist der genaue Unterschied zu zweiten VM von wo aus der Connect funktioniert?
 
Kann ich nicht nachvollziehen, MS geht oft seine eigenen Wege, aber die Ports auf der Firewall zu prüfen und auch auf UDP zu achten, finde ich einen brauchbaren Hinweis. Mindestens so brauchbar, wie "MS Hotline"..
TDS ist ein Layer 7 Protokoll, da isses wurscht was für Ports und obs UDP is oder nicht. TDS wird übrigens IMMER eingesetzt zwischen SQL Server und Clients. Der Microsoft Support ist im übrigen sehr gut. Und bei so einem Problem ist nun mal der Hersteller Support die erste Wahl als ein Forum wo nur im Nebel gestochert wird.
 
TDS ist ein Layer 7 Protokoll, da isses wurscht was für Ports und obs UDP is oder nicht.
Na wenn Du meinst. In meinem Beitrag habe ich TDS bewusst ausgeklammert und lediglich einen kleinen Hinweise zu Firewalls geliefert.
Ich habe nichts gegen den Support von MS gesagt.
Meine Erfahrung ist, dass Leute, die im Forum aufschlagen, eher nach kostenlosen Möglichkeiten suchen, ihr Problem in den Griff zu bekommen. Aber vielleicht gibt es das ja bei MS.
 
Werbung:
Zurück
Oben