Wesentliche Versionsunterschiede im Microsoft ODBC Driver für SQL Server

Dieser Artikel beschreibt aktuelle Änderungen zwischen Microsoft ODBC Driver 18 für SQL Server und Version 17.

Die meisten Anwendungen, die von Version 17 auf Version 18 aktualisieren, sind von einer einzigen Änderung betroffen: Verbindungen sind standardmäßig verschlüsselt. Wenn deine Anwendung nach dem Upgrade keine Verbindung mehr hat, lies zuerst das Standard-Verschlüsselungsverhalten .

Zusammenfassung der Änderungen

Bereich Version 17 Version 18 und spätere Versionen
Standardeinstellung Encrypt no yes
Encrypt Akzeptierte Werte yes, no yes, no, Mandatory, Optional, , Strict
Verschlüsselungsmodi An oder an Aus, an oder streng
Überprüfung des Serverzertifikats Tritt nur auf, wenn man eine Verschlüsselung anfordert. Tritt standardmäßig auf, weil die Verschlüsselung standardmäßig aktiviert ist
Schlüsselwörter für Verbindungszeichenfolgen Grundmenge Basisset plus neue Schlüsselwörter

Verschlüsselungsänderungen

Standardverschlüsselungsverhalten

In Version 17 sind Verbindungen nicht verschlüsselt, es sei denn, du bittest um Verschlüsselung oder der Server verlangt sie. In Version 18 und späteren Versionen sind die Verbindungen standardmäßig verschlüsselt.

Da der Treiber das Serverzertifikat validiert, wenn er eine Verbindung verschlüsselt, verbindet sich eine Anwendung, die mit einem selbst signierten oder anderweitig nicht vertrauenswürdigen Zertifikat mit einem Server verbunden ist, erfolgreich mit Version 17 und scheitert mit Version 18. Der Fehler ist ein Zertifikatsvalidierungsfehler, kein Authentifizierungsfehler.

Sie haben drei Möglichkeiten, es zu lösen, von am sichersten bis am wenigsten sicher:

  • Installiere ein Zertifikat auf dem Server, dem der Client vertraut. Diese Option ist die empfohlene und die einzige, die sowohl Verschlüsselung als auch Validierung beibehält.
  • Lassen Sie die Verschlüsselung aktiviert und sagen Sie dem Treiber, welchen Namen er validieren soll, indem Sie oder ServerCertificatesetzenHostNameInCertificate.
  • Schalte die Verschlüsselung aus, um die Standardversion 17 wiederherzustellen, indem du die Verbindungszeichenfolge hinzufügstEncrypt=no.

Caution

Die Einstellung TrustServerCertificate=yes hält die Verbindung verschlüsselt, deaktiviert aber die Zertifikatsvalidierung, wodurch die Verbindung für Angriffe durch Gegner-in-der-Mitte offen bleibt. Bevorzuge ein vertrauenswürdiges Zertifikat.

Verschlüssele Werte

Version 17 akzeptiert nur yes und no. Version 18 und spätere Versionen akzeptieren diese Werte und fügen drei weitere hinzu:

Wert Entspricht Behavior
Mandatory yes Die Verbindung ist verschlüsselt.
Optional no Die Verbindung ist nicht verschlüsselt, es sei denn, der Server verlangt es.
Strict Nichts Die Verbindung verwendet TDS-8.0-Verschlüsselung.

Strict hat kein Pendant zur Version 17. Es ist der einzige Wert, der TDS 8.0 auswählt, bei dem die Verschlüsselung vor dem Login-Austausch und nicht währenddessen ausgehandelt wird.

Verschlüsselungsverhalten von Version 17 wiederherstellen

Um das Standardverhalten der Version 17 wiederherzustellen, setzen Encrypt Sie explizit:

Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;

Das explizite Setzen des Wertes ist auch auf Version 17 vorteilhaft, da sich der Verbindungszeichenfolge auf beiden Versionen gleich verhält.

Neue Verbindungszeichenfolge-Schlüsselwörter

Version 18 fügt folgende Verbindungszeichenfolge-Schlüsselwörter hinzu, die Version 17 nicht erkennt:

Keyword Purpose
ConcatNullYieldsNull Kontrolliert, ob das Zusammenfügen eines Nullwerts null ergibt.
GetDataExtensions Kontrolliert, welche SQLGetData Erweiterungen der Treiber aktiviert.
HostNameInCertificate Spezifiziert den Hostnamen, der im TLS-Zertifikat des Servers validiert werden soll.
IpAddressPreference Spezifiziert die IP-Adressfamilie, die der Treiber zuerst versucht.
LongAsMax Mappt lange Datentypen auf ihre max Äquivalente.
RetryExec Konfiguriert die Regeln für Wiederholungen für fehlgeschlagene Abfragen.
ServerCertificate Spezifiziert den Pfad zu einer Zertifikatsdatei, gegen die der Server validiert wird.

Einzelne Schlüsselwörter wurden in verschiedenen Version 18-Versionen eingeführt. Für die Veröffentlichung, die jedes Schlüsselwort einführte, und für die vollständige Schlüsselwortreferenz siehe ODBC DSN und Verbindungszeichenfolge Keywords.