Hlavní rozdíly verzí v ovladači Microsoft ODBC pro SQL Server

Tento článek popisuje zásadní změny mezi Microsoft ODBC Driver 18 pro SQL Server a verzí 17.

Většina aplikací, které aktualizují z verze 17 na verzi 18, je ovlivněna jedinou změnou: připojení jsou ve výchozím nastavení šifrována. Pokud se vaše aplikace po upgradu přestane připojovat, nejprve si přečtěte Výchozí šifrovací chování .

Souhrn vašich změn

Area Verze 17 Verze 18 a pozdější verze
Výchozí Encrypt nastavení no yes
Encrypt Přijímané hodnoty yes, no yes, no, Mandatory, , OptionalStrict
Šifrovací režimy Vypnuto nebo zapnuté Vypnuto, zapnuté nebo přísné
Ověření certifikátu serveru Nestane se to, pokud nepožádáte o šifrování Vyskytuje se to ve výchozím nastavení, protože šifrování je zapnuté ve výchozím nastavení
Klíčová slova připojovacího řetězce Základní sada Základní sada plus nová klíčová slova

Změny šifrování

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

Ve verzi 17 nejsou připojení šifrována, pokud o něj nepožádáte nebo ho server nevyžaduje. Ve verzi 18 a novějších jsou připojení automaticky šifrována.

Protože ovladač ověřuje serverový certifikát při každém šifrování spojení, aplikace, která se připojí k serveru s vlastním nebo jinak nedůvěryhodným certifikátem, se úspěšně připojí s verzí 17 a selže s verzí 18. Selhání je chyba validace certifikátu, nikoli chyba autentizace.

Máte tři způsoby, jak to vyřešit, seřazené od nejbezpečnějšího po nejméně bezpečné:

  • Nainstalujte na server certifikát, kterému klient důvěřuje. Tato možnost je doporučená a je jediná, která uchovává jak šifrování, tak validaci.
  • Nechte šifrování zapnuté a řekněte ovladači, které jméno má ověřit, nastavením HostNameInCertificate nebo ServerCertificate.
  • Vypněte šifrování, abyste obnovili výchozí verzi 17, přidáním Encrypt=no do připojovací řetězec.

Caution

Nastavení TrustServerCertificate=yes udržuje spojení šifrované, ale deaktivuje validaci certifikátu, což vystavuje spojení útokům útočníka uprostřed (adversary-in-the-middle). Preferujte důvěryhodný certifikát.

Šifrovat hodnoty

Verze 17 přijímá pouze yes a .no Verze 18 a novější verze tyto hodnoty přijímají a přidávají další tři:

Value Ekvivalentní k Chování
Mandatory yes Spojení je šifrované.
Optional no Připojení není šifrované, pokud to server nevyžaduje.
Strict None Připojení používá šifrování TDS 8.0.

Strict nemá ekvivalent verze 17. Je to jediná hodnota, která vybírá TDS 8.0, kde se šifrování vyjednává před přihlašovací výměnou, nikoli během ní.

Obnovení chování šifrování verze 17

Pro obnovení výchozího chování verze 17 nastavte Encrypt explicitně:

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

Explicitní nastavení hodnoty je výhodné i ve verzi 17, protože způsobuje, že připojovací řetězec se chová stejně v obou verzích.

Nová klíčová slova připojovací řetězec

Verze 18 přidává následující klíčová slova připojovací řetězec, která verze 17 nerozpoznává:

Keyword Purpose
ConcatNullYieldsNull Ovládá, zda spojení nulové hodnoty vede k nulové hodnotě.
GetDataExtensions Ovládá, která SQLGetData rozšíření ovladač aktivuje.
HostNameInCertificate Specifikuje název hostitele, který se ověří v TLS certifikátu serveru.
IpAddressPreference Specifikuje rodinu IP adres, kterou ovladač zkouší jako první.
LongAsMax Mapuje dlouhé datové typy na jejich max ekvivalenty.
RetryExec Konfiguruje pravidla pro opakované pokusy pro neúspěšné dotazy.
ServerCertificate Specifikuje cestu k certifikátovému souboru, proti kterému se server ověřuje.

Jednotlivá klíčová slova byla zavedena v různých verzích 18. Pro vydání, které každé klíčové slovo představovalo, a pro kompletní referenci na klíčová slova viz ODBC DSN a klíčová slova připojovací řetězec.