Delen via


Grote verschillen in versies

In dit artikel worden belangrijke wijzigingen beschreven tussen Microsoft OLE DB Driver 19 voor SQL Server en eerdere versies.

Aanbeveling

MSOLEDBSQL19 (Microsoft OLE DB Driver 19 for SQL Server) is het huidige aanbevolen OLE DB-stuurprogramma. Het ondersteunt TDS 8.0 en moderne beveiligingsfuncties. Versie 19.2.0+ ondersteunt ook TLS 1.3. Gebruik Provider=MSOLEDBSQL19 deze in uw verbindingsreeksen.

Overzicht van wijzigingen

Area Versie 18 en eerder Versie 19+
Standaardinstelling voor versleuteling (Encrypt) no (geen versleuteling of de server kan versleuteling vereisen) Mandatory (versleuteling vereist)
Encrypt eigenschapstype VT_BOOL VT_BSTR
Encrypt geldige waarden no/yes no/yes/true/false/Optional/Mandatory/Strict
Certificaatvalidatie Overgeslagen wanneer clientsets Encrypt=no Altijd geëvalueerd wanneer versleuteling plaatsvindt
Stuurprogrammanaam MSOLEDBSQL MSOLEDBSQL19
CLSID MSOLEDBSQL_CLSID (verouderd) MSOLEDBSQL_CLSID (bijgewerkt in koptekst)

Waarschuwing

ActiveDirectoryPassword-verificatie is afgeschaft. Als u migreert van versie 18 naar 19 en u Authentication=ActiveDirectoryPasswordwilt migreren naar een veiligere verificatiemethode. Zie Afgeschafte verificatiemethoden voor alternatieven.

Wijzigingen in de versleutelingseigenschap

Wijziging van eigenschapstype versleutelen

De eigenschap SSPROP_INIT_ENCRYPT van het stuurprogramma verandert van VT_BOOL in VT_BSTR.

verbindingsstring Versie 18-waarden Versie 19-waarden
Aanbieder: Encrypt no/yes no/yes/true/false/Optional/Mandatory/Strict
IDataInitialize: Use Encryption for Data true/false no/yes/true/false/Optional/Mandatory/Strict

Waardetoewijzing:

Wijze Equivalente waarden Gedrag
Optional no, false Niet-versleuteld, tenzij de server dit vereist
Mandatory (standaard) yes, true Versleutelde verbinding vereist
Strict (geen equivalent) TDS 8.0-versleuteling; vereist SQL Server 2022+

Aanbeveling

Vanaf versie 19.2.0 kunnen TDS 8.0-verbindingen TLS 1.3 gebruiken bij het maken van verbinding met SQL Server 2022 of hoger. De ServerCertificate eigenschap is ook toegevoegd in deze versie. Zie TLS 1.3-ondersteuning voor meer informatie.

Voor compatibiliteit met eerdere versies accepteert versie 19 alle waarden van versie 18 (yes/no) naast de nieuwe waarden ().Optional/Mandatory/Strict

Standaardgedrag voor versleuteling

Versie Verstek Resultaat
18 en eerder no Verbindingen zijn standaard niet versleuteld
19+ Mandatory Verbindingen die standaard zijn versleuteld

Als u het gedrag van versie 18 wilt herstellen, voegt u een van deze opties toe aan uw verbindingsreeks:

  • Aanbieder: Encrypt=Optional;
  • IDataInitialize: Use Encryption for Data=Optional;

Certificaatvalidatiegedrag

Scenario Versie 18 Versie 19+
Clientsets Encrypt=no, server dwingt geen versleuteling af Geen validatie Geen validatie
Clientsets Encrypt=no, server dwingt versleuteling af Trust Server Certificate Genegeerd Trust Server Certificate Geëvalueerd
Clientsets Encrypt=yes Trust Server Certificate Geëvalueerd Trust Server Certificate Geëvalueerd

Compatibiliteitsnotities

Versie 19-clients die gebruikmaken van standaardinstellingen, kunnen geen verbinding maken wanneer de server versleuteling dwingt en een niet-vertrouwd certificaat gebruikt. Werk uw Trust Server Certificate instelling bij of gebruik een vertrouwd certificaat.

TrustServerCertificate is niet verwijderd in versie 19. De optie werkt nog steeds. Versie 18 negeerde deze instelling wanneer Encrypt deze is ingesteld op no, zelfs wanneer de server geforceerde versleuteling afdwong. Versie 19 evalueert TrustServerCertificate nu in alle versleutelde scenario's.

Het stuurprogramma versie 19, vóór 19.4.1, had een installatieprobleem waarmee de TrustServerCertificate registeroptie no kon worden ingesteld op systemen waarop v18 eerder was geïnstalleerd. Wanneer dit probleem zich voordeed, zou het stuurprogramma de veiligere registerinstelling gebruiken, waardoor verbindingsreeksopties mogelijk geen effect hebben. Dit probleem is opgelost in versie 19.4.1. Bij een nieuwe installatie van v19 (zonder v18 aanwezig) is de registeroptie altijd correct ingesteld op yes. Zie Registerinstellingenvoor meer informatie.

De indeling van trefwoorden verschilt per interface:

  • Verbindingsreeksen van provider gebruiken geen spaties: TrustServerCertificate=yes;
  • IDataInitialize-verbindingsreeksen maken gebruik van spaties: Trust Server Certificate=yes;

Zie Versleuteling en certificaatvalidatie in OLE DB voor meer informatie.

Registerinstellingen voor Force Protocol Encryption

De registerinstelling Force Protocol Encryption maakt gebruik van numerieke waarden die zijn toegewezen aan versleutelingsmodi:

Registerwaarde Versleutelingsmodus Description
0 Optional Versleuteling alleen als de server dit vereist
1 Mandatory Versleuteling vereist
2 Strict TDS 8.0-versleuteling

Het stuurprogramma maakt gebruik van de veiligste optie tussen de registerinstelling en de verbindingseigenschap. Zie Registerinstellingen voor registersleutellocaties.

Wijzigingen in de naam van de coureur

Versie 19 biedt ondersteuning voor side-by-side-installatie met versie 18. De naam van het stuurprogramma bevat het primaire versienummer voor differentiatie.

gebruikersinterface Versie 18 Versie 19
Trefwoord provider MSOLEDBSQL MSOLEDBSQL19
CLSID-constante MSOLEDBSQL_CLSID MSOLEDBSQL_CLSID (bijgewerkt in msoledbsql.h)
Weergavenaam van de gebruikersinterface Microsoft OLE DB-stuurprogramma voor SQL Server Microsoft OLE DB-stuurprogramma 19 voor SQL Server

Migratiestappen

  1. Neem de bijgewerkte msoledbsql.h koptekst op in uw project.
  2. Voor IDBInitialize: Geen wijzigingen nodig (CLSID bijgewerkt in header).
  3. Voor IDataInitialize: Wijzigen Provider=MSOLEDBSQL in Provider=MSOLEDBSQL19.
  4. Voor UI-hulpprogramma's (SSMS, eigenschappen van gegevenskoppeling): Selecteer Microsoft OLE DB-stuurprogramma 19 voor SQL Server.

Voorbeelden van verbindingsreeksen

Versie 18 (vóór):

Provider=MSOLEDBSQL;Server=myserver;Database=mydb;Trusted_Connection=yes;

Versie 19 (na):

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Trusted_Connection=yes;

Versie 19 met expliciete versleutelingsinstellingen:

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Mandatory;TrustServerCertificate=no;

Versie 19 met strikte versleuteling (TDS 8.0):

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Strict;ServerCertificate=C:\certs\server.cer;

Nieuwe eigenschappen van versie 19

Versie 19 introduceert eigenschappen voor verbeterde certificaatvalidatie met Strict de versleutelingsmodus.

HostNameInCertificate (v19.0.0+)

Hiermee geeft u de hostnaam op die moet worden gevalideerd op basis van het TLS/SSL-certificaat van de server. Gebruik deze eigenschap wanneer de servernaam in de verbindingsreeks verschilt van de algemene naam van het certificaat (CN) of alternatieve onderwerpnaam (SAN).

gebruikersinterface Vastgoed
Trefwoord provider HostNameInCertificate
Trefwoord IDataInitialize Host Name In Certificate
OLE DB-eigenschap SSPROP_INIT_HOST_NAME_CERTIFICATE

Opmerking

Deze eigenschap wordt genegeerd wanneer Trust Server Certificate deze is ingeschakeld. Wanneer Encrypt=Strict, wordt het certificaat altijd gevalideerd.

ServerCertificate (v19.2.0+)

Hiermee geeft u het pad naar een certificaatbestand (PEM, DER of CER-indeling) op voor exacte certificaatkoppeling. Het stuurprogramma vergelijkt dit certificaat met het certificaat van de server tijdens de TLS-handshake.

gebruikersinterface Vastgoed
Trefwoord provider ServerCertificate
Trefwoord IDataInitialize Server Certificate
OLE DB-eigenschap SSPROP_INIT_SERVER_CERTIFICATE

Belangrijk

ServerCertificate kan alleen worden gebruikt wanneer Encrypt=Strict. Een poging om deze te gebruiken met Mandatory of Optional versleuteling resulteert in een verbindingsfout.

Afgeschafte verificatiemethoden

ActiveDirectoryPassword

De ActiveDirectoryPassword verificatiemethode (Wachtwoordverificatie voor Microsoft Entra-id) is afgeschaft. Deze verificatie is gebaseerd op de OAuth 2.0 ROPC-toekenning (Resource Owner Password Credentials), die niet compatibel is met meervoudige verificatie (MFA) en beveiligingsrisico's vormt.

Waarschuwing

Microsoft gaat weg van deze verificatiestroom met een hoog risico om gebruikers te beschermen tegen schadelijke aanvallen. Plan om te migreren naar een veiligere verificatiemethode voordat deze optie wordt verwijderd. Zie Planning voor verplichte meervoudige verificatie voor Azure voor meer informatie.

Scenario Aanbevolen verificatie Verbindingsreeks trefwoord
Interactieve gebruikerscontext Meervoudige verificatie Authentication=ActiveDirectoryInteractive
App die wordt uitgevoerd in Azure Beheerde identiteit Authentication=ActiveDirectoryMSI
Service/daemon zonder gebruiker Service principal Authentication=ActiveDirectoryServicePrincipal

Zie Microsoft Entra-id gebruiken voor meer informatie.

Probleemoplossingsproces

Verbinding mislukt met certificaatvalidatiefout

Symptoom: Verbinding mislukt met een certificaatvalidatiefout of niet-vertrouwd certificaatbericht.

Oorzaak: versie 19 is standaard ingesteld Encrypt=Mandatoryop, waarvoor een geldig servercertificaat is vereist. Versie 18 is standaard ingesteld op Encrypt=no (niet-versleuteld).

Oplossingen:

  • Aanbevolen: Installeer een vertrouwd certificaat op de server.
  • Alleen ontwikkeling: toevoegen TrustServerCertificate=yes; aan uw verbindingsreeks (niet aanbevolen voor productie).
  • Terugval: Toevoegen Encrypt=Optional; om het gedrag van versie 18 te herstellen (vermindert de beveiliging).

De verbinding mislukt met 'Servercertificaat kan alleen worden gebruikt met strikte versleuteling'

Symptoom: Verbinding mislukt wanneer u de ServerCertificate eigenschap gebruikt.

Oorzaak: De ServerCertificate eigenschap vereist Encrypt=Strict.

Oplossing: verwijder de ServerCertificate verbindingsreeks of ga naar Encrypt=Strict;.

Toepassing ontvangt VT_BOOL fout bij het instellen van de eigenschap Encrypt

Symptoom: Het instellen SSPROP_INIT_ENCRYPT met een Booleaanse waarde mislukt.

Oorzaak: Versie 19 heeft het eigenschapstype gewijzigd van VT_BOOL in VT_BSTR.

Oplossing: Gebruik tekenreekswaarden ("Mandatory", "Optional", "Strict", "yes", ) "no"in plaats van booleaanse waarden.

Provider niet gevonden na de upgrade

Symptoom: De toepassing mislukt met 'Provider niet gevonden' of een vergelijkbare fout.

Oorzaak: versie 19 gebruikt een andere providernaam (MSOLEDBSQL19).

Oplossingen:

  • Werk de verbindingsreeks bij van Provider=MSOLEDBSQL naar Provider=MSOLEDBSQL19.
  • Neem de bijgewerkte msoledbsql.h header op als u deze gebruikt IDBInitialize met de CLSID.