Sdílet prostřednictvím


Rozdíly v hlavních verzích

Tento článek popisuje zásadní změny mezi ovladačem Microsoft OLE DB 19 pro SQL Server a staršími verzemi.

Návod

MSOLEDBSQL19 (ovladač Microsoft OLE DB 19 pro SQL Server) je aktuálně doporučený ovladač OLE DB. Podporuje TDS 8.0 a moderní funkce zabezpečení. Verze 19.2.0+ podporuje také protokol TLS 1.3. Použijte Provider=MSOLEDBSQL19 v připojovacích řetězcích.

Souhrn vašich změn

Area Verze 18 a starší Verze 19 nebo novější
Výchozí nastavení šifrování (Encrypt) no (žádné šifrování nebo server nemůže vyžadovat šifrování) Mandatory (vyžadováno šifrování)
Encrypt typ vlastnosti VT_BOOL VT_BSTR
Encrypt platné hodnoty no/yes no/yes/true/false/Optional/Mandatory/Strict
Ověření certifikátu Vynecháno při sadách klientů Encrypt=no Vždy vyhodnoceno při výskytu šifrování
Název ovladače MSOLEDBSQL MSOLEDBSQL19
identifikátor CLSID MSOLEDBSQL_CLSID (starší verze) MSOLEDBSQL_CLSID (aktualizováno v hlavičce)

Výstraha

Ověřování ActiveDirectoryPassword je zastaralé. Pokud migrujete z verze 18 na 19 a používáte Authentication=ActiveDirectoryPassword, naplánujte migraci na bezpečnější metodu ověřování. Alternativy najdete v tématu Zastaralé metody ověřování .

Změny vlastností šifrování

Změna typu vlastnosti Encrypt

Vlastnost SSPROP_INIT_ENCRYPT ovladače se změní z VT_BOOL na VT_BSTR.

Připojovací řetězec Hodnoty verze 18 Hodnoty verze 19
Poskytovatel: Encrypt no/yes no/yes/true/false/Optional/Mandatory/Strict
IDataInitialize: Use Encryption for Data true/false no/yes/true/false/Optional/Mandatory/Strict

Mapování hodnot:

Mode Ekvivalentní hodnoty Chování
Optional no, false Nešifrované, pokud ho server nevyžaduje
Mandatory (výchozí) yes, true Vyžaduje se šifrované připojení.
Strict (bez ekvivalentu) Šifrování TDS 8.0; vyžaduje SQL Server 2022+

Návod

Od verze 19.2.0 můžou připojení TDS 8.0 při připojování k SQL Serveru 2022 nebo novějším používat protokol TLS 1.3. Vlastnost ServerCertificate byla přidána také v této verzi. Další informace najdete v tématu Podpora protokolu TLS 1.3.

Kvůli zpětné kompatibilitě přijímá verze 19 kromě nových hodnot () všechny hodnoty verze 18 (yes///noMandatoryOptionalStrict).

Výchozí chování šifrování

Version Výchozí Result
18 a starší no Nešifrovaná připojení ve výchozím nastavení
19+ Mandatory Připojení se ve výchozím nastavení šifrují

Pokud chcete obnovit chování verze 18, přidejte do připojovacího řetězce jednu z těchto možností:

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

Chování ověření certifikátu

Scenario Verze 18 Verze 19 nebo novější
Klientské sady Encrypt=no, server nevynucuje šifrování Bez ověření Bez ověření
Klientské sady Encrypt=no, server vynutí šifrování Trust Server Certificate Ignorovány Trust Server Certificate Vyhodnocena
Klientské sady Encrypt=yes Trust Server Certificate Vyhodnocena Trust Server Certificate Vyhodnocena

Poznámky k kompatibilitě

Klienti verze 19, kteří používají výchozí nastavení, se nepodaří připojit, když server vynutí šifrování a použije nedůvěryhodný certifikát. Aktualizujte nastavení Trust Server Certificate nebo použijte důvěryhodný certifikát.

TrustServerCertificate nebyla odebrána ve verzi 19. Tato možnost stále funguje. Verze 18 ignorovala toto nastavení, když Encrypt bylo nastaveno no, i když server vynucené šifrování. Verze 19 se teď vyhodnocuje TrustServerCertificate ve všech šifrovaných scénářích.

Ovladač verze 19, před verzí 19.4.1, měl problém s instalačním programem, který by mohl nastavit TrustServerCertificate možnost registru na no systémy, které dříve měly nainstalovanou verzi 18. Když k tomuto problému dojde, ovladač by použil bezpečnější nastavení registru, což by mohlo znamenat, že možnosti připojovacího řetězce nemají žádný vliv. Tento problém byl vyřešen ve verzi 19.4.1. Čerstvá instalace v19 (bez verze 18) vždy správně výchozí možnost yesregistru . Pro více informací viz nastavení registru.

Formát klíčového slova se liší podle rozhraní:

  • Připojovací řetězce zprostředkovatele nepoužívají žádné mezery: TrustServerCertificate=yes;
  • IDataInitialize připojovacích řetězců používá mezery: Trust Server Certificate=yes;

Další informace naleznete v tématu Šifrování a ověření certifikátu v OLE DB.

Nastavení registru pro vynucené šifrování protokolu

Nastavení registru Force Protocol Encryption používá číselné hodnoty, které se mapuje na režimy šifrování:

Hodnota registru Režim šifrování Description
0 Optional Šifrování pouze v případě, že server vyžaduje
1 Mandatory Vyžaduje se šifrování.
2 Strict Šifrování TDS 8.0

Ovladač používá nejbezpečnější možnost mezi nastavením registru a vlastností připojení. Informace o umístění klíčů registru najdete v tématu Nastavení registru.

Změny názvu ovladače

Verze 19 podporuje souběžnou instalaci s verzí 18. Název ovladače obsahuje číslo hlavní verze pro rozlišení.

Rozhraní Verze 18 Verze 19
Klíčové slovo zprostředkovatele MSOLEDBSQL MSOLEDBSQL19
CLSID – konstanta MSOLEDBSQL_CLSID MSOLEDBSQL_CLSID (aktualizováno v msoledbsql.h)
Zobrazovaný název uživatelského rozhraní Ovladač Microsoft OLE DB pro SQL Server Ovladač Microsoft OLE DB 19 pro SQL Server

Kroky migrace

  1. Do projektu zahrňte aktualizované msoledbsql.h záhlaví.
  2. Pro IDBInitialize: Nejsou potřeba žádné změny (CLSID aktualizováno v hlavičce).
  3. Pro IDataInitialize: Změnit Provider=MSOLEDBSQL na Provider=MSOLEDBSQL19.
  4. Pro nástroje uživatelského rozhraní (SSMS, vlastnosti datového propojení): Vyberte ovladač Microsoft OLE DB 19 pro SQL Server.

Příklady připojovacích řetězců

Verze 18 (před):

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

Verze 19 (po):

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

Verze 19 s explicitním nastavením šifrování:

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

Verze 19 s přísným šifrováním (TDS 8.0):

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

Nová verze 19 možností ubytování

Verze 19 zavádí vlastnosti pro rozšířené ověřování certifikátů v Strict režimu šifrování.

HostNameInCertificate (v19.0.0+)

Určuje název hostitele, který se má ověřit vůči certifikátu TLS/SSL serveru. Tuto vlastnost použijte, pokud se název serveru v připojovacím řetězci liší od společného názvu certifikátu (CN) nebo alternativního názvu subjektu (SAN).

Rozhraní Vlastnictví
Klíčové slovo zprostředkovatele HostNameInCertificate
Klíčové slovo IDataInitialize Host Name In Certificate
Vlastnost OLE DB SSPROP_INIT_HOST_NAME_CERTIFICATE

Poznámka:

Tato vlastnost je ignorována, pokud Trust Server Certificate je povolena. Pokud Encrypt=Strictse certifikát vždy ověří.

ServerCertificate (v19.2.0+)

Určuje cestu k souboru certifikátu (formát PEM, DER nebo CER) pro přesnou shodu certifikátu. Ovladač porovnává tento certifikát s certifikátem serveru během metody handshake protokolu TLS.

Rozhraní Vlastnictví
Klíčové slovo zprostředkovatele ServerCertificate
Klíčové slovo IDataInitialize Server Certificate
Vlastnost OLE DB SSPROP_INIT_SERVER_CERTIFICATE

Důležité

ServerCertificate lze použít pouze v případech, kdy Encrypt=Strict. Při pokusu o použití Mandatory s šifrováním dojde Optional k chybě připojení.

Zastaralé metody ověřování

ActiveDirectoryPassword

ActiveDirectoryPassword Metoda ověřování (ověřování hesla Microsoft Entra ID) je zastaralá. Toto ověřování vychází z udělení hesla vlastníka prostředku OAuth 2.0 (ROPC), které není kompatibilní s vícefaktorovým ověřováním (MFA) a představuje bezpečnostní rizika.

Výstraha

Microsoft odchází od tohoto vysoce rizikového toku ověřování, aby chránil uživatele před škodlivými útoky. Před odebráním této možnosti naplánujte migraci na bezpečnější metodu ověřování. Další informace najdete v tématu Plánování povinného vícefaktorového ověřování pro Azure.

Scenario Doporučené ověřování Klíčové slovo připojovacího stringu
Interaktivní kontext uživatele Vícefaktorové ověřování Authentication=ActiveDirectoryInteractive
Aplikace spuštěná v Azure Spravovaná identita Authentication=ActiveDirectoryMSI
Služba nebo démon bez uživatele Servisní principal Authentication=ActiveDirectoryServicePrincipal

Další informace naleznete v tématu Použití Microsoft Entra ID.

Řešení problémů

Připojení selže s chybou ověření certifikátu

Příznak: Připojení selže s chybou ověření certifikátu nebo zprávou o nedůvěryhodném certifikátu.

Příčina: Výchozí hodnota Encrypt=Mandatoryverze 19, která vyžaduje platný certifikát serveru. Výchozí Encrypt=no verze 18 je (nešifrovaná).

Řešení:

  • Doporučeno: Nainstalujte na server důvěryhodný certifikát.
  • Pouze vývoj: Přidejte TrustServerCertificate=yes; do připojovacího řetězce (nedoporučuje se pro produkční prostředí).
  • Náhradní: Přidání Encrypt=Optional; k chování při obnovení verze 18 (snižuje zabezpečení).

Připojení selže s chybou "Certifikát serveru se dá použít pouze s přísným šifrováním".

Příznak: Připojení selže při použití ServerCertificate vlastnosti.

Příčina: Vlastnost ServerCertificate vyžaduje Encrypt=Strict.

Řešení: Buď odeberte ServerCertificate z připojovacího řetězce, nebo změňte na Encrypt=Strict;.

Při nastavení vlastnosti Encrypt dojde k chybě VT_BOOL aplikace

Příznak: Nastavení SSPROP_INIT_ENCRYPT s logickou hodnotou selže.

Příčina: Verze 19 změnila typ vlastnosti z VT_BOOL na VT_BSTR.

Řešení: Místo logických hodnot použijte řetězcové hodnoty ("Mandatory", "Optional", "Strict""yes", , "no").

Poskytovatel se po upgradu nenašel.

Příznak: Aplikace selže s chybou "Zprostředkovatel nebyl nalezen" nebo podobnou chybou.

Příčina: Verze 19 používá jiný název poskytovatele (MSOLEDBSQL19).

Řešení:

  • Aktualizujte připojovací řetězec z Provider=MSOLEDBSQL do Provider=MSOLEDBSQL19.
  • Pokud používáte IDBInitialize s CLSID, zahrňte aktualizovanou msoledbsql.h hlavičku.