Freigeben über


TDS 8.0

Gilt für: SQL Server 2022 (16.x) und höhere Versionen von Azure SQL DatabaseAzure SQL Managed InstanceSQL SQL database in Microsoft Fabric

SQL Server 2022 (16.x), Azure SQL-Datenbank und Azure SQL Managed Instance unterstützen Tabular Data Stream (TDS) 8.0.

Das TDS-Protokoll (Tabular Data Stream) ist ein Anwendungsebeneprotokoll, das von Clients zum Herstellen einer Verbindung mit SQL Server verwendet wird. SQL Server verwendet Transport Layer Security (TLS), um Daten zu verschlüsseln, die über ein Netzwerk zwischen einer Instance von SQL Server und einer Clientanwendung übertragen werden.

Der TDS ist ein sicheres Protokoll, aber in früheren Versionen von SQL Server konnte die Verschlüsselung deaktiviert oder nicht aktiviert werden. Um die Standards der obligatorischen Verschlüsselung bei der Verwendung von SQL Server zu erfüllen, wurde eine Iteration des TDS-Protokolls eingeführt: TDS 8.0.

Der TLS-Handshake erfolgt nun vor TDS-Nachrichten, wodurch die TDS-Sitzung in TLS eingebettet wird, um die Verschlüsselung zu erzwingen und TDS 8.0 mit HTTPS und anderen Webprotokollen in Einklang zu bringen. Diese Verbesserung trägt erheblich zur TDS-Datenverkehrsverwaltung bei, da Standardnetzwerkgeräte jetzt SQL-Abfragen filtern und sicher übergeben können.

Ein Vorteil von TDS 8.0 gegenüber früheren TDS-Versionen ist die Kompatibilität mit TLS 1.3 und TLS-Standards. TDS 8.0 ist auch vollständig mit TLS 1.2 und früheren TLS-Versionen kompatibel.

Funktionsweise des TDS

Das TDS-Protokoll (Tabular Data Stream) ist ein Anwendungsebenenprotokoll, das für die Übertragung von Anforderungen und Antworten zwischen Clients und Datenbank-Serversystemen verwendet wird. Das Clientsystem stellt in der Regel eine langlebige Verbindung mit dem Server her. Sobald die Verbindung mit einem Protokoll auf Transportebene hergestellt wurde, werden TDS-Nachrichten ausgetauscht, um zwischen dem Client und SQL Server zu kommunizieren.

Die TDS-Sitzungsdauer umfasst drei Phasen:

  • Initialisierung
  • Authentifizierung
  • Datenaustausch

Die Verschlüsselung wird während der ersten Phase ausgehandelt, aber die TDS-Aushandlung erfolgt über eine nicht verschlüsselte Verbindung. Die SQL Server-Verbindung wird bei Versionen vor TDS 8.0 wie folgt hergestellt:

TCP-Handshake ➡️ TDS-Voranmeldung (Klartext) und Antwort (Klartext) ➡️ TLS-Handshake ➡️ Authentifizierung (verschlüsselt) ➡️ Datenaustausch (verschlüsselt oder nicht verschlüsselt)

Mit der Einführung von TDS 8.0 werden die SQL Server-Verbindungen wie folgt hergestellt:

TCP-Handshake ➡️ TLS-Handshake ➡️ TDS-Voranmeldung (verschlüsselt) und Antwort (verschlüsselt) ➡️ Authentifizierung (verschlüsselt) ➡️ Datenaustausch (verschlüsselt)

Kompatibilitätsmatrix für TDS-, TLS-, Betriebssystem- und Verschlüsselungsoptionen

Sie können sowohl TLS 1.2- als auch TLS 1.3-Versionen auf Betriebssystemebene aktivieren, wodurch Clientverbindungen mit SQL Server mehrere TDS-Protokollversionen (TDS 7.x und 8.0) verwenden können. Je nach Betriebssystemversion ist TLS 1.2 und TLS 1.3 möglicherweise standardmäßig aktiviert.

Nur TDS 7.x unterstützt nicht verschlüsselte (optionale) Kommunikation, TDS 8.0 unterstützt dies nicht. TDS 7.x unterstützt verschlüsselung mit TLS bis Version 1.2. TDS 8.0 erfordert Verschlüsselung – alles ist immer mit TDS 8.0 verschlüsselt (Encrypt=Strict). TDS 8.0 hat keine Mindestanforderung für TLS-Versionen und unterstützt TLS 1.3. Die TLS 1.3-Unterstützung ist von der Betriebssystemversion abhängig. In der folgenden Tabelle sind verschiedene Szenarien mit den Verschlüsselungsoptionen und den entsprechenden TLS- und TDS-Versionen zusammengefasst.

Verschlüsseln
Option
TLS-Version aktiviert Betriebssystemversion Voraussichtlich
connection
Ergebnis
Hinweise
Strict Nur TLS 1.3 (oder höher) Windows 11

Windows Server 2022 und höher
Success TLS 1.3 ausgehandelt; TDS 8.0 ausgelöst (Encrypt=Strict)
Strict TLS 1.2 und TLS 1.3 Windows 11

Windows Server 2022 und höher
Success TLS 1.3 ausgehandelt; TDS 8.0 ausgelöst (Encrypt=Strict)
Strict Nur TLS 1.2 (oder früher) Windows 11

Windows Server 2022 und höher
Success TLS 1.2 ausgehandelt; TDS 8.0 ausgelöst (Encrypt=Strict)
Strict Nur TLS 1.2 (oder früher) Windows 10

Windows Server 2019 / 2016
Success TLS 1.2 ausgehandelt; TDS 8.0 ausgelöst (TLS 1.3 nicht verfügbar)
Obligatorisch. Nur TLS 1.3 (oder höher) Windows 11

Windows Server 2022 und höher
Failure Encrypt=Obligator ist mit TLS 1.3 für TDS 8.0 nicht kompatibel.
Obligatorisch. TLS 1.2 und TLS 1.3 Windows 11

Windows Server 2022 und höher
Success TLS 1.2 ausgehandelt; TDS 8.0 nicht ausgelöst (Verschlüsselung=Verpflichtend)
Obligatorisch. Nur TLS 1.2 (oder früher) Windows 11

Windows Server 2022 und höher
Success TLS 1.2 ausgehandelt; TDS 8.0 nicht ausgelöst (Verschlüsselung=Verpflichtend)
Obligatorisch. Nur TLS 1.2 (oder früher) Windows 10

Windows Server 2019 / 2016
Success TLS 1.2 ausgehandelt; TDS 8.0 wird unter diesem Betriebssystem nicht unterstützt (verwendet TDS 7.x)
Wahlfrei Nur TLS 1.3 (oder höher) Windows 11

Windows Server 2022 und höher
Failure Encrypt=Optional (false) ist TDS 7.x, das mit TLS 1.3 nicht kompatibel ist.
Wahlfrei TLS 1.2 und TLS 1.3 Windows 11

Windows Server 2022 und höher
Success TLS 1.3 ausgehandelt; TDS 8.0 nicht ausgelöst (Encrypt=Optional)
Wahlfrei Nur TLS 1.2 (oder früher) Windows 11

Windows Server 2022 und höher
Success TLS 1.2 ausgehandelt; TDS 8.0 nicht ausgelöst (Encrypt=Optional)
Wahlfrei Nur TLS 1.2 (oder früher) Windows 10

Windows Server 2019 / 2016
Success TLS 1.2 wurde ausgehandelt; Verschlüsselung ist optional; die Verbindung kann
Erfolge ohne Verschlüsselung erzielen
Beliebig Nur TLS 1.3 (oder höher) Windows 10

Windows Server 2019 / 2016
Failure TLS 1.3 wird unter diesem Betriebssystem nicht unterstützt

Weitere Informationen dazu, wie Clients unterschiedliche TDS-Versionen verwenden, finden Sie im Abschnitt „Änderungen an Verbindungszeichenfolgen-Verschlüsselungseigenschaften“, in dem die Schlüsselwörterverwendung beschrieben wird.

SQL Server 2025-Unterstützung

SQL Server 2025 (17.x) führt die TDS 8.0-Unterstützung für die folgenden Befehlszeilentools und SQL Server-Features ein:

1Die TDS 8.0-Unterstützung führt zu bahnbrechenden Änderungen an diesen Features.

Strenge Verbindungsverschlüsselung

Um TDS 8.0 zu verwenden, hat SQL Server 2022 (16.x) strict als zusätzliche Verschlüsselungsoption für Verbindungen zu SQL Server-Treibern hinzugefügt (Encrypt=strict). Um den Verbindungsverschlüsselungstyp strict zu verwenden, laden Sie die neueste Version der Treiber für .NET, ODBC, OLE DB, JDBC, PHP und Python herunter.

Um einen Man-in-the-Middle-Angriff mit strict Verbindungsverschlüsselung zu verhindern, können Benutzer die TrustServerCertificate Option nicht auf true festlegen und dürfen keine Zertifikate zulassen, die vom Server bereitgestellt werden. Stattdessen verwenden Benutzer*innen die HostNameInCertificate-Option, um das Zertifikat ServerName anzugeben, das vertrauenswürdig sein sollte. Das vom Server bereitgestellte Zertifikat muss die Zertifikatüberprüfung bestehen. Weitere Informationen zur Zertifikatüberprüfung finden Sie unter Zertifikatanforderungen für SQL Server

Zusätzliche Änderungen an Eigenschaften für die Verbindungszeichenfolgenverschlüsselung

Die folgenden Optionen werden Verbindungszeichenfolgen zur Verschlüsselung der Kommunikation hinzugefügt.

Schlüsselwort Standard Beschreibung
Encrypt FALSCH Vorherige Verbindungszeichenfolgenoptionen

Gültige Optionen sind
- trueoder yes
- false, oder no.
Weitere Informationen finden Sie unter Verbindungszeichenfolgensyntax. Wenn true SQL Server TLS 1.2-Verschlüsselung für alle zwischen dem Client und dem Server ausgetauschten Daten verwendet, wenn auf dem Server ein Zertifikat installiert ist.

Neueste Verbindungszeichenfolgenoptionen

Gültige Optionen sind
- strict
- mandatory, oder true, oder yes
- optional, oder false, oder no.

Wenn auf strict festgelegt, verwendet SQL Server TDS 8.0 für alle zwischen Client und Server ausgetauschten Daten.

Wenn diese Einstellung auf mandatory, true oder yes festgelegt ist, verwendet SQL Server TDS 7.x mit TLS-/SSL-Verschlüsselung für alle zwischen dem Client und dem Server gesendeten Daten, sofern auf dem Server ein Zertifikat installiert ist.

Bei Festlegung auf optional, false oder no verwendet die Verbindung TDS 7.x und ist nur dann verschlüsselt, wenn SQL Server dies erfordert.
TrustServerCertificate FALSCH Vorherige Verbindungszeichenfolgenoption

Bei Festlegung auf true (nicht empfohlen) überprüft der Treiber das TLS/SSL-Zertifikat des Servers nicht. Wenn true das TLS/SSL-Zertifikat des Servers automatisch als vertrauenswürdig angesehen wird und die Überprüfung umgangen wird, wenn die Kommunikationsschicht mit TLS verschlüsselt wird.

Bei false überprüft der Treiber das TLS-/SSL-Serverzertifikat. Wenn bei der Überprüfung des Serverzertifikats ein Fehler auftritt, löst der Treiber einen Fehler aus und trennt die Verbindung. Der Standardwert ist false. Vergewissern Sie sich, dass der an serverName übergebene Wert für eine erfolgreiche TLS-/SSL-Verbindung exakt dem allgemeinen Namen (Common Name (CN)) oder dem DNS-Namen im alternativen Antragstellernamen (Subject Alternate Name) im Serverzertifikat entspricht.

Verhaltensänderung für Microsoft SQL Server ODBC-Treiber 18 und höher

Wenn diese Einstellung auf Encryptstrict festgelegt ist, gibt diese Einstellung den Speicherort des Zertifikats an, das für die Serverzertifikatüberprüfung verwendet werden soll (genaue Übereinstimmung). Der Treiber unterstützt die Dateierweiterungen PEM, DER und CER.

Wenn Encrypt die Eigenschaft auf true oder false, und die TrustServerCertificate Eigenschaft nicht angegeben oder auf null, trueoder falsefestgelegt ist, verwendet der Treiber den ServerName Eigenschaftswert für die Verbindungs-URL als Hostname, um das SQL Server TLS/SSL-Zertifikat zu überprüfen.
HostNameInCertificate null Der Hostname, der beim Überprüfen des TLS/SSL-Zertifikats von SQL Server verwendet werden soll. Wenn die HostNameInCertificate Eigenschaft nicht angegeben oder festgelegt nullist, verwendet der Treiber den ServerName Eigenschaftswert als Hostname, um das SQL Server TLS/SSL-Zertifikat zu überprüfen.