Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2022 (16.x) und höhere Versionen
von Azure SQL Database
Azure SQL Managed Instance
SQL 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:
- SQL Server-Agent
- sqlcmd-Hilfsprogramm
- bcp-Hilfsprogramm
- SQL VSS Writer
- SQL CEIP-Dienst
- Datenbank-E-Mail
- Polybase
- AlwaysOn-Verfügbarkeitsgruppen
- Always On Failoverclusterinstanz (FCI)
- Verknüpfte Server1
- Transaktionsreplikation1
- Zusammenführende Replikation1
- Snapshot-Replikation1
- Protokollversand1
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.
- Microsoft ADO.NET für SQL Server and Azure SQL-Datenbank Version 5.1 oder höher
- ODBC-Treiber für SQL Server: ab Version 18.1.2.1
- Microsoft OLE DB-Treiber für SQL Server Version 19.2.0 oder höher
- Microsoft JDBC-Treiber für SQL Server, Version 11.2.0 oder höher
- Microsoft Drivers for PHP for SQL Server: ab Version 5.10
- Python-SQL-Treiber – pyODBC
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. |