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. Použijte ho, když vybíráte verzi ovladače, aktualizujete aplikaci z verze 17 na verzi 18, nebo když potřebujete nastavit, aby se připojovací řetězec choval konzistentně na obou verzích.
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í .
Vyberte verzi 17 nebo 18
Driver 18 je aktuální hlavní verze. Ovladač 17 zůstává podporován, ale aplikace, které jej používají, stále potřebují nejnovější vedlejší verzi v řadě Driver 17, aby mohly dostat opravy. Pro data podpory a pravidla servisu viz životní cyklus podpory.
| Scenario | Doporučená cesta |
|---|---|
| Nová aplikace | Začni s ovladačem 18. Konfigurujte šifrování a ověřování certifikátů před produkcí. |
| Existující aplikace Driver 17 | Nainstalujte ovladač 18 vedle ovladače 17, změňte název ovladače v připojovací řetězec nebo DSN a Encrypt nastavte to explicitně. Pokud ověření certifikátu selže, opravte serverový certifikát nebo důvěryhodné úložiště klienta. |
Aplikace, která vyžaduje Encrypt=Strict, HostnameInCertificate, RetryExec, nebo jiné klíčové slovo Driver 18 |
Použijte verzi Driver 18, která toto nastavení podporuje. Ovladač 17 nepřijímá Strict hodnotu a Encrypt nerozpoznává nová klíčová slova. |
Aplikace, která vyžaduje připnutí certifikátového souboru pomocí ServerCertificate |
Použijte ovladač 18.1 nebo novější verzi s Encrypt=Strict. Ovladač 17 toto nastavení nepodporuje. |
Změna hlavních verzí obvykle znamená změnu názvu ovladače nebo balíčku, který si vyberete:
| Platform | Driver 17 | Řidič 18 |
|---|---|---|
| Název ovladače spojovacího řetězce | ODBC Driver 17 for SQL Server |
ODBC Driver 18 for SQL Server |
| Název balíčku pro Linux | msodbcsql17 |
msodbcsql18 |
Souhrn vašich změn
Výchozí a validační řádky popisují běžná vzdálená připojení bez nastavení DSNEncrypt, atributu SQL_COPT_SS_ENCRYPT nebo přepsání šifrování Windows Force Protocol. LocalDB není vzdálený cíl TLS.
| Area | Verze 17 | Verze 18 a pozdější verze |
|---|---|---|
Výchozí Encrypt nastavení |
no, pokud Authentication není nastavena na jinou hodnotu než none nebo aplikační množiny SQL_COPT_SS_ACCESS_TOKEN; pak yes |
yes (18.0.1 a později) |
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 | S , ověřuje Encrypt=yes;TrustServerCertificate=nocertifikát. Samotné šifrování vyžadované serverem neznamená validaci. |
Ve výchozím nastavení validuje. V nepřísných režimech přeskočí běžnou validaci, TrustServerCertificate=yes včetně případů, kdy server vyžaduje šifrování. |
| 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í
Ovladač 17 se výchozí nastavujeEncrypt=no, pokud klíčové slovo Authentication není nastaveno na jinou hodnotu nebo none pokud aplikace nenastaví atribut.SQL_COPT_SS_ACCESS_TOKEN Každá z těchto variant změní výchozí na yes. Explicitní Encrypt=no stále šifrování vypíná. Ovladač 18.0.1 a pozdější výchozí na .Encrypt=yes Nastavte Encrypt to explicitně, když porovnáváte verze.
Plné připojení chrání texty dotazů a výsledky stejně jako přihlášení. S , server může stále vyžadovat šifrování Encrypt=noplného připojení. Když klient i server zvolí vypnutí šifrování, vyjednávání bez přísného režimu používá pouze přihlášení (endin); to nechrání následná data aplikace.
S , oba ovladače zvolí Encrypt=yes;TrustServerCertificate=novalidaci běžného serverového certifikátu. Pokud pouze server vyžaduje plné připojení a TrustServerCertificate=no (výchozí), ovladač 18 ověřuje certifikát. S režimem TrustServerCertificate=yes Strict mimo režim Driver 18 tuto validaci přeskočí. Ovladač 17 se nevaliduje jen kvůli požadavku na server. Windows Force Protocol Encryption a interní cesty zpětného volání ověřování certifikátů nejsou zahrnuty v tomto srovnání.
Při výchozím nastavení šifrování může upgrade z verze 17 na verzi 18 odhalit nedůvěryhodný serverový certifikát. Pokud verze 18 certifikát zamítne, diagnostikujte řetězec certifikátů a jeho název před změnou nastavení autentizace.
Udržujte šifrování a ověřování identity serveru zapnuté:
- Nakonfigurujte platný serverový certifikát a důvěrné úložiště klienta tak, aby klient důvěřoval své vydávající certifikační autoritě. Připojte se pomocí jména v certifikátu.
- Pokud se připojíte přes alias, nastavte
HostnameInCertificateplatné jméno v certifikátu serveru. Toto nastavení neopravuje nedůvěryhodný řetězec certifikátů. - Pro
Encrypt=Strict, ovladače 18.1 a novější verze také podporujíServerCertificateporovnání serverového certifikátu s certifikátovým souborem. Toto nastavení připne certifikát; nespecifikuje hostitelské jméno. Před použitím si projděte jeho omezení v ODBC DSN a klíčových slovech připojovací řetězec.
Caution
Pro izolované testovací prostředí požaduje šifrování, Encrypt=yes;TrustServerCertificate=yes ale vynechává ověřování identity serveru, čímž zůstává spojení otevřené útokům útočníka uprostřed (adversary-in-the-middle). Nepoužívej to jako opravu produkčního trustu. V režimu TrustServerCertificate Strict je ignorován.
Pokud existující aplikace vyžaduje výchozí verzi 17 během kontrolovaného testu kompatibility, viz Obnovení chování šifrování verze 17.
Encrypt=no A Encrypt=optional neopravujte důvěru v certifikáty, protože můžete nechat data aplikací nešifrovaná.
Š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 |
Nežádá šifrování plného připojení. Server ji může stále vyžadovat; šifrování pouze přihlašováním není úplná ochrana před relací. |
Strict |
None | Připojení používá šifrování TDS 8.0. Server musí podporovat TDS 8.0, například SQL Server 2022 a novější verze. |
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
Po přezkoumání oprav důvěry použijte následující nastavení pouze pro kontrolovaný test kompatibility, který umožňuje nešifrovaná data aplikací:
Encrypt=no
Ovladač 18 toto nastavení také akceptuje Encrypt=optional . Žádná z těchto hodnot nebrání serveru v nutnosti šifrování. Po testu obnovte zamýšlenou šifrovanou konfiguraci; nepoužívejte zakázané šifrování jako řešení důvěryhodnosti certifikátů.
Kontrolní seznam upgradu
- Inventářové spojovací řetězce, DSN, odkazy na balíčky a skripty pro nasazení, které vybírají ovladač 17.
- Nainstalujte ovladač 18 v testovacím prostředí, které odpovídá produkci.
- Změňte klíčové slovo
Driverv každém připojovací řetězec naODBC Driver 18 for SQL Server, a aktualizujte nebo znovu vytvořte každé DSN pro použití ovladače 18. Instalace ovladače 18 nepřepne stávající připojení, protože připojení s názvem Driver 17 stále používají ovladač 17. - Explicitně nastavte
Encrypt. PoužitíEncrypt=Mandatorys běžnou validací certifikátů. PoužívejteEncrypt=Strictpouze tehdy, když server podporuje TDS 8.0, například SQL Server 2022 a novější verze. Pro servery, které nepodporují TDS 8.0, použijteEncrypt=Mandatory. - Pro běžnou validaci se spojte a
TrustServerCertificate=noověřte důvěryhodný řetězec a přijaté jméno serveru. U verzí ovladačů 18.1 a novějších se Strict Filepinning, ověřte přesnou shodu certifikátů a data platnosti;TrustServerCertificateje v režimu Strict ignorováno. - Spusť autentizační, dotazové, transakční, hromadné kopírování, failover a opětovné pokusy aplikace.
- Zkontrolujte diagnostiku na chyby ověřování certifikátů, než budete považovat selhání za autentizaci nebo chyby v síti.
- Nechte ovladač 17 nainstalovaný a inventář si nechte od kroku 1 až do dokončení ověření, abyste se mohli vrátit na verzi 17.
Vrať se zpět na verzi 17
Ovladač 17 a ovladač 18 se instalují vedle sebe, takže můžete vrátit zpět bez odinstalování ovladače 18. Pro podrobnosti o stažení a instalaci viz Stáhněte ODBC ovladač pro SQL Server.
- Ověřte, že ovladač 17 je stále nainstalovaný na každém klientovi.
- Pomocí inventáře z kontrolního seznamu pro upgrade změňte klíčové slovo
Driverv každém připojovací řetězec zpět na .ODBC Driver 17 for SQL Server - Aktualizujte nebo znovu vytvořte každé DSN pro použití ovladače 17.
- Vrátit odkazy na balíčky a skripty nasazení do balíčku Driver 17, například
msodbcsql17na Linuxu. - Obnovte
Encrypthodnoty aTrustServerCertificateaplikace, které používaly s ovladačem 17. Ovladač 17 přijímá pouzeyesanoproEncrypta nerozpoznává klíčová slova ovladače 18, jakoHostnameInCertificateje neboServerCertificate, takže odstraňte hodnoty a klíčová slova přidaná pro ovladač 18. Změňte klíčová slova aliasu zpět na jejich jména Driver 17 a nahraďteConnectTimeoutSQLSetConnectAttrho voláním, které nastavíSQL_ATTR_LOGIN_TIMEOUT. Pro mapování viz klíčová slova New připojovací řetězec.
Ověřte rollback před tím, než ho považujete za dokončený:
- Každé spojení hlásí ovladač 17. Zavolejte SQLGetInfo s
SQL_DRIVER_VER; hlavní verzí17je . - Autentizace, dotazy, transakce, hromadné kopírování, failover a opětovné pokusy aplikace jsou úspěšné.
- Spojovací řetězce a DSN neobsahují
Encryptžádné hodnoty ani klíčová slova, která byla přidána pro ovladač 18.
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á. Některé z nich jsou nové názvy pro nastavení, která verze 17 podporuje pod jiným klíčovým slovem nebo atributem, uvedeným ve sloupci ekvivalentu verze 17 .
| Keyword | Minimální verze | Purpose | Ekvivalent verze 17 |
|---|---|---|---|
ConcatNullYieldsNull |
18.6 | Ovládá, zda spojení nulové hodnoty vede k nulové hodnotě. | None |
ConnectTimeout |
18.7 | Nastaví timeout přihlášení na sekundy. Pokud aplikace také nastaví SQL_ATTR_LOGIN_TIMEOUT, má atribut přednost. |
SQL_ATTR_LOGIN_TIMEOUT atribut, nastavený s SQLSetConnectAttr |
FailoverPartner |
18.7 | Specifikuje partnera pro failover pro zrcadlení databáze. Jenom Windows. |
Failover_Partner klíčové slovo |
GetDataExtensions |
18,0 | Ovládá, která SQLGetData rozšíření ovladač aktivuje. |
None |
HostnameInCertificate |
18,0 | Specifikuje název hostitele, který se ověří v TLS certifikátu serveru. | None |
IpAddressPreference |
18.1 | Specifikuje rodinu IP adres, kterou ovladač zkouší jako první. | None |
LongAsMax |
18,0 | Mapuje dlouhé datové typy na jejich max ekvivalenty. |
None |
MultipleActiveResultSets |
18.7 | Umožňuje více aktivních sad výsledků (MARS). Přijímá Yes nebo No. |
MARS_Connection klíčové slovo |
RetryExec |
18.1 | Konfiguruje pravidla pro opakované pokusy pro neúspěšné dotazy. | None |
ServerCertificate |
18.1 | Specifikuje soubor certifikátu, který má být shodný se serverovým certifikátem při použití Encrypt=Strict. |
None |
WorkstationID |
18.7 | Specifikuje název pracovní stanice zaslaný serveru. |
WSID klíčové slovo |
MultipleActiveResultSets, WorkstationID, a FailoverPartner jsou aliasy, které zarovnávají názvy klíčových slov ODBC s Microsoft.Data.SqlClient názvy vlastností. Verze 18 také přijímá starší názvy. Podrobnosti viz Unifikace klíčových slov spojovacích řetězců a klíčové slovo ConnectTimeout.
Pro kompletní referenci klíčových slov viz ODBC DSN a připojovací řetězec klíčová slova.