Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
HostNameInCertificateneboServerCertificate. - Vypněte šifrování, abyste obnovili výchozí verzi 17, přidáním
Encrypt=nodo 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.