Belangrijke versieverschillen in de Microsoft ODBC Driver voor SQL Server

Dit artikel beschrijft brekende wijzigingen tussen Microsoft ODBC Driver 18 voor SQL Server en versie 17.

De meeste applicaties die upgraden van versie 17 naar versie 18 worden door één wijziging getroffen: verbindingen zijn standaard versleuteld. Als je applicatie na de upgrade stopt met verbinden, lees dan eerst het standaardversleutelingsgedrag.

Overzicht van wijzigingen

Area Versie 17 Versie 18 en latere versies
Standaardinstelling Encrypt no yes
Encrypt Geaccepteerde waarden yes, no yes, no, Mandatory, Optional, , Strict
Versleutelingsmodi Aan of aan Uit, aan of strikt
Validatie van servercertificaat Het gebeurt niet tenzij je om encryptie vraagt Dit gebeurt standaard, omdat encryptie standaard aan staat
Trefwoorden voor verbindingsreeks Basisset Basisset plus nieuwe trefwoorden

Versleutelingswijzigingen

Standaardgedrag voor versleuteling

In versie 17 zijn verbindingen niet versleuteld, tenzij je om encryptie vraagt of de server het vereist. In versie 18 en latere versies zijn verbindingen standaard versleuteld.

Omdat de driver het servercertificaat valideert telkens wanneer hij een verbinding versleutelt, maakt een applicatie die verbinding maakt met een server met een zelfondertekend of anderszins onbetrouwbaar certificaat succesvol verbinding met versie 17 en faalt met versie 18. De fout is een certificaatvalidatiefout, geen authenticatiefout.

Je hebt drie manieren om het op te lossen, van meest tot minst veilig:

  • Installeer een certificaat op de server dat de client vertrouwt. Deze optie wordt aanbevolen en is de enige die zowel encryptie als validatie behoudt.
  • Houd encryptie aan en vertel de driver welke naam hij moet valideren, door of ServerCertificatein te stellenHostNameInCertificate.
  • Schakel de encryptie uit om de standaard versie 17 te herstellen, door toe te voegen Encrypt=no aan de verbindingsreeks.

Caution

Door de verbinding te stellen TrustServerCertificate=yes blijft de verbinding versleuteld, maar wordt certificaatvalidatie uitgeschakeld, waardoor de verbinding kwetsbaar is voor aanvallen van het midden van de tegenstander. Geef de voorkeur aan een vertrouwd certificaat.

Versleutel waarden

Versie 17 accepteert alleen yes en no. Versie 18 en latere versies accepteren deze waarden en voegen er drie extra toe:

Value Gelijk aan Gedrag
Mandatory yes De verbinding is versleuteld.
Optional no De verbinding is niet versleuteld tenzij de server dat vereist.
Strict Geen De verbinding gebruikt TDS 8.0-encryptie.

Strict heeft geen equivalent van versie 17. Het is de enige waarde die TDS 8.0 selecteert, waarbij encryptie wordt onderhandeld vóór de login-uitwisseling in plaats van tijdens deze uitwisseling.

Herstel het encryptiegedrag van versie 17

Om het standaardgedrag van versie 17 te herstellen, stel expliciet in Encrypt :

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

Het expliciet instellen van de waarde is zelfs op versie 17 voordelig, omdat het ervoor zorgt dat de verbindingsreeks zich op beide versies hetzelfde gedraagt.

Nieuwe verbindingsreeks-sleutelwoorden

Versie 18 voegt de volgende verbindingsreeks-zoekwoorden toe, die versie 17 niet herkent:

Keyword Purpose
ConcatNullYieldsNull Bepaalt of het samenvoegen van een nulwaarde nul oplevert.
GetDataExtensions Bepaalt welke SQLGetData uitbreiding de driver inschakelt.
HostNameInCertificate Specificeert de hostnaam die gevalideerd moet worden in het TLS-certificaat van de server.
IpAddressPreference Geeft de IP-adresfamilie aan die de driver als eerste probeert.
LongAsMax Kaarten lange datatypes af naar hun max equivalenten.
RetryExec Stelt herkansingsregels in voor mislukte zoekopdrachten.
ServerCertificate Specificeert het pad naar een certificaatbestand om de server tegen te valideren.

Individuele trefwoorden werden geïntroduceerd in verschillende versies 18. Voor de release waarin elk trefwoord werd geïntroduceerd, en voor de volledige trefwoordreferentie, zie ODBC DSN en verbindingsreeks keywords.