Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk leírja a Microsoft ODBC Driver 18 for SQL Server és a 17-es verzió közötti törésszerű változásokat. Használd, amikor kiválasztasz egy driver verziót, frissítesz egy alkalmazást a 17-es verzióról a 18-ra, vagy mindkét verzióban következetesen viselkedni kell egy kapcsolati karakterlánc-et.
A legtöbb alkalmazást, amely a 17-es verzióról a 18-as verzióra frissít, egyetlen változás érinti: a kapcsolatok alapértelmezés szerint titkosítva vannak. Ha az alkalmazásod nem csatlakozik a frissítés után, először olvasd el az alapértelmezett titkosítási viselkedést .
Válaszd a 17-es vagy 18-as verziót
A Driver 18 a jelenlegi fő verzió. A Driver 17 továbbra is támogatott, de azok az alkalmazások, amelyek ezt használják, még mindig a Driver 17 legújabb kisebb verziójára van szükségük a javításokhoz. A támogatási dátumokért és a karbantartási szabályokért lásd: Támogatási életciklus.
| Scenario | Ajánlott elérési út |
|---|---|
| Új alkalmazás | Kezdd a 18-as vezetővel. Konfigurálja a titkosítást és a tanúsítvány ellenőrzését a gyártás előtt. |
| Meglévő Driver 17 alkalmazás | Telepítsd a 18-as meghajtót a 17-es illesztőprogram mellett, változtasd meg a driver-nevet a kapcsolati karakterlánc-ben vagy DSN-ben, és állítsd Encrypt be explicit. Ha a tanúsítvány ellenőrzése sikertelen, javítsd meg a szerver tanúsítványt vagy az ügyfél bizalmi tárolóját. |
Olyan alkalmazás, amelyhez , HostnameInCertificate, RetryExec, vagy más Driver 18 kulcsszó szükségesEncrypt=Strict, |
Használj egy Driver 18 kiadást, amely támogatja ezt a beállítást. A 17-es vezető nem fogadja el az Strict új kulcsszavakat Encrypt és nem ismeri fel az új kulcsszavakat. |
Olyan alkalmazás, amelynek tanúsítványfájl rögzítése szükséges ServerCertificate |
Használj Driver 18.1-et vagy egy újabb verziót .Encrypt=Strict A Driver 17 nem támogatja ezt a beállítást. |
A főbb verziók megváltoztatása általában azt jelenti, hogy megváltoztatod a kiválasztott driver nevet vagy csomagot:
| Platform | 17-es sofőr | 18-as versenyző |
|---|---|---|
| Kapcsolati string meghajtó neve | ODBC Driver 17 for SQL Server |
ODBC Driver 18 for SQL Server |
| Linux csomag név | msodbcsql17 |
msodbcsql18 |
Módosítások összefoglalása
Az alapértelmezett és ellenőrző sorok olyan hagyományos távoli kapcsolatokat írnak le, amelyekre DSN Encrypt beállítás, attribútum SQL_COPT_SS_ENCRYPT vagy a Windows Force Protocol titkosítás felülírása nem tartozik. A LocalDB nem távoli TLS célpont.
| Area | 17-es verzió | 18-as verzió és későbbi változatok |
|---|---|---|
Alapértelmezett Encrypt beállítás |
no, hacsak Authentication nem egy más értékre van beállítva, mint none vagy az alkalmazáshalmazok SQL_COPT_SS_ACCESS_TOKEN; akkor yes |
yes (18.0.1 és később) |
Encrypt Elfogadott értékek |
yes, no |
yes, no, Mandatory, Optional, Strict |
| Titkosítási módok | Kikapcsolva vagy be | Kikapcsolva, bekapcsolva, vagy szigorúan |
| Kiszolgálótanúsítvány érvényesítése | A Encrypt=yes;TrustServerCertificate=no, érvényesíti a tanúsítványt. A szerver által igényelt titkosítás önmagában nem választja ki a validációt. |
Alapértelmezés szerint érvényesíti. Nem szigorú módokban TrustServerCertificate=yes kihagyja a normál validációt, beleértve azokat a lehetőségeket is, amikor a szerver titkosítást igényel. |
| Kapcsolati karakterlánc kulcsszavak | Alapkészlet | Alapkészlet és új kulcsszavak |
Titkosítási változások
Alapértelmezett titkosítási viselkedés
A 17-es meghajtó alapértelmezett módjára Encrypt=no működik, hacsak a Authentication kulcsszó nem állít más értékre, vagy none az alkalmazás nem állítja be az SQL_COPT_SS_ACCESS_TOKEN attribútumot. Bármelyik módosítja az alapértelmezet.yes Az explicit Encrypt=no még mindig kikapcsolja a titkosítást. A 18.0.1 és újabb illesztőprogram alapértelmezetként .Encrypt=yes Állítsd Encrypt be kifejezetten a verziók összehasonlításától.
A teljes kapcsolatos titkosítás védi a lekérdezési szöveget és az eredményeket, valamint a bejelentkezést. A szerver esetén Encrypt=noa szerver továbbra is teljes kapcsolati titkosítást igényelhet. Ha mind a kliens, mind a szerver kikapcsolja a titkosítást, a nem szigorú egyeztetés csak bejelentkezésre épülő titkosítást használ; ez nem védi a későbbi alkalmazásadatokat.
A -vel Encrypt=yes;TrustServerCertificate=nomindkét illesztőprogram a normál szerver tanúsítvány validálást választja. Ha csak a szerver teljes kapcsolati titkosítást igényel, és TrustServerCertificate=no (az alapértelmezett megoldás), a 18-as meghajtó érvényesíti a tanúsítványt. A TrustServerCertificate=yes Strict módon kívüli módban a 18-as vezető kihagyja ezt az ellenőrzést. A driver 17 nem csak a szerver követelménye miatt validál. A Windows Force Protocol titkosítása és a belső tanúsítvány-validációs visszahívási útvonalak nem vonatkoznak ebbe az összehasonlításba.
Az alapértelmezett titkosítási beállításokkal a 17-es verzióról a 18-as verzióra való frissítés nem megbízható szervertanúsítványt is felfedhet. Ha a 18-as verzió elutasítja a tanúsítványt, diagnosztizálja a tanúsítványláncot és a nevet, mielőtt megváltoztatná a hitelesítési beállításokat.
Tartsd engedélyezve a titkosítást és a szerverazonosító ellenőrzést:
- Konfiguráljon egy érvényes szerver tanúsítványt és az ügyfél bizalmi tárolóját úgy, hogy az ügyfél megbízzon a kiadó tanúsítvány feloldó hatóságában. Csatlakozz a tanúsítványban szereplő néven.
- Ha aliason keresztül csatlakozol,
HostnameInCertificateállíts be érvényes nevet a szerver tanúsítványban. Ez a beállítás nem javít egy megbízhatatlan tanúsítványláncot. - A
Encrypt=Strict, Driver 18.1 és újabb verziók is támogatjákServerCertificatea szerver tanúsítvány összevetését egy tanúsítványfájlhoz. Ez a beállítás tanúsítványt rögzít; nem határoz meg haszt nevet. A használat előtt nézze át a korlátozásait az ODBC DSN-ben és a kapcsolati karakterlánc kulcsszavakban.
Caution
Egy izolált tesztkörnyezetben Encrypt=yes;TrustServerCertificate=yes titkosítást kér, de kihagyja a szerverazonosító ellenőrzést, így a kapcsolat nyitva marad az ellenfél támadásainak. Ne használd termelési alap javításként. Szigorú módban TrustServerCertificate figyelmen kívül hagyják.
Ha egy meglévő alkalmazás a 17-es verzió alapértelmezett beállítását igényli egy kontrollált kompatibilitási teszt során, lásd : Restore 17 verzió titkosítási viselkedése.
Encrypt=no És Encrypt=optional ne javítsd meg a tanúsítvány bizalmát, így az alkalmazásadatokat titkosítatlanul hagyhatod.
Titkosítási értékek
A 17-es verzió csak yes és noa rendszereket fogadja. A 18-as verzió és későbbi verziók elfogadják ezeket az értékeket, és további három értéket adnak hozzá:
| Value | Egyenértékű valamivel | Magatartás |
|---|---|---|
Mandatory |
yes |
A kapcsolat titkosított. |
Optional |
no |
Nem kér teljes kapcsolatos titkosítást. A szerver továbbra is megkövetelheti ezt; a bejelentkezési titkosítás nem teljes munkamenet védelmet jelent. |
Strict |
Nincs | A kapcsolat TDS 8.0 titkosítást használ. A szervernek támogatnia kell a TDS 8.0-át, például az SQL Server 2022-t és újabb verziókat. |
Strict nincs 17-es verzió megfelelője. Ez az egyetlen érték, amely TDS 8.0-t választ, ahol a titkosítást a bejelentkezés előtti tárgyalás végzi, nem pedig a bejelentkezés során.
Visszaállítás a 17-es verziós titkosítási viselkedés
A bizalmi javítások átnézése után csak egy kontrollált kompatibilitási teszthez használja az alábbi beállítást, amely titkosítatlan alkalmazásadatokat engedélyez:
Encrypt=no
A 18-as vezető is elfogadja Encrypt=optional ezt a beállítást. Egyik érték sem akadályozza meg a szerver titkosítását. A teszt után állítsa vissza a tervezett titkosított konfigurációt; ne használd a letiltott titkosítást tanúsítvány-bizalmi megoldásként.
Frissítési ellenőrzőlista
- Inventory kapcsolati láncok, DSN-ek, csomaghivatkozások és telepítési szkriptek, amelyek kiválasztják a 17-es meghajtót.
- Telepítsd a 18-as meghajtót olyan tesztkörnyezetbe, amely megfelel a gyártásnak.
- Változtasd meg minden
Driverkapcsolati karakterlánc kulcsszavaját -re,ODBC Driver 18 for SQL Serverés frissítsd vagy hozd létre minden DSN-t a 18-as meghajtó használatára. A Driver 18 telepítése nem kapcsolja a meglévő kapcsolatokat, mert a Driver 17 nevű kapcsolatok továbbra is a Driver 17-et használják. - Állítsa be
Encryptexplicit módon. Normál tanúsítvány ellenőrzéssel használdEncrypt=Mandatory. Csak akkor használjaEncrypt=Strict, ha a szerver támogatja a TDS 8.0-t, például az SQL Server 2022 és újabb verziókat. Azoknak a szervereknek, amelyek nem támogatják a TDS 8.0-t, használdEncrypt=Mandatory. - A normál ellenőrzéshez csatlakozz és
TrustServerCertificate=noellenőrizd a megbízható láncot és az elfogadott szerver nevet. A Driver 18.1 és újabb verzióknál, amelyek Strict fájl rögzítéssel rendelkeznek, ellenőrizd a pontos tanúsítványegyezést és érvényességi dátumokat;TrustServerCertificateSzigorú módban figyelmen kívül hagyják. - Futasd be az alkalmazás hitelesítési, lekérdezési, tranzakcióját, tömeges másolatát, failover- és újrapróbálási útvonalait.
- Vizsgálja át a tanúsítvány validációs hibák diagnosztikáját, mielőtt a hibákat hitelesítésként vagy hálózati hibáként kezelnéd.
- Tartsd meg a 17-es meghajtót telepítve, és tartsd az inventoryt az 1. lépéstől egészen az ellenőrzésig, hogy vissza tudj térni a 17-es verzióra.
Vissza a 17-es verzióhoz
A 17-es és a 18-as illesztőprogram egymás mellett telepíthető, így vissza tudsz állítani anélkül, hogy eltávolítanád a 18-as meghajtót. Letöltési és telepítési részletekért lásd: Download ODBC Driver for SQL Server.
- Erősítsd meg, hogy a Driver 17 még mindig telepítve van minden kliensre.
- A frissítési ellenőrzőlistából származó készletet használva változtasd vissza minden
Driverkapcsolati karakterlánc kulcsszavaját -reODBC Driver 17 for SQL Server. - Frissítsd vagy hozd létre az egyes DSN-eket, hogy a 17-es meghajtót használjuk.
- A csomaghivatkozásokat és telepítési szkripteket visszafordítsa a Driver 17 csomagba, például
msodbcsql17Linuxon. - Állítsd vissza a
Encrypt17-es meghajtóval használt alkalmazás ésTrustServerCertificateértékeit. A 17-es meghajtó csakyesésnoforEncryptkulcsszavakat fogad el, és nem ismeri fel a 18-as vezetőhöz tartozó kulcsszavakat, mintHostnameInCertificatepéldául vagyServerCertificate, ezért távolítsd el a 18-as meghajtóhoz hozzáadott értékeket és kulcsszavakat. Változtasd vissza az alias kulcsszavakat a Driver 17 nevükre, ésConnectTimeouthelyettesítsd egySQLSetConnectAttrolyan hívással, amely beállítjaSQL_ATTR_LOGIN_TIMEOUT. A leképezésért lásd: New kapcsolati karakterlánc kulcsszavak.
Validáld a visszagörgetést, mielőtt befejezettnek kezelnéd:
- Minden kapcsolat a 17-es vezetőt jelenti. Hívjuk az SQLGetInfo-t ;
SQL_DRIVER_VERa fő verzió .17 - Az alkalmazás hitelesítési, lekérdezési, tranzakciója, tömeges másolása, újratöltési és újrapróbálási útvonalai sikeresek.
- A kapcsolódási stringek és DSN-ek nem
Encrypttartalmaznak olyan értékeket vagy kulcsszavakat, amelyeket a 18-as meghajtóhoz adtak hozzá.
Új kapcsolati karakterlánc kulcsszavak
A 18-as verzió hozzáadja a következő kapcsolati karakterlánc kulcsszavakat, amelyeket a 17-es verzió nem ismer fel. Néhány új nevek olyan beállításokra, amelyeket a 17-es verzió támogat, egy másik kulcsszó vagy attribútum alatt, amely a 17-es verzió megfelelő oszlopban szerepel.
| Keyword | Minimális verzió | Alkalmazás célja | 17-es verzió megfelelője |
|---|---|---|---|
ConcatNullYieldsNull |
18.6 | Szabályozza, hogy nullérték összekötése nulla eredményt eredményez-e. | Nincs |
ConnectTimeout |
18,7 | Másodpercekben állítja be a bejelentkezési időkorlátot. Ha az alkalmazás szintén beállítja SQL_ATTR_LOGIN_TIMEOUT, az attribútum elsőbbséget vesz fel. |
SQL_ATTR_LOGIN_TIMEOUT attribútum, halmaz SQLSetConnectAttr |
FailoverPartner |
18,7 | Megadja a rendszerátvételi partnert az adatbázis tükrözéséhez. Csak Windows rendszeren. |
Failover_Partner kulcsszó |
GetDataExtensions |
18.0 | Szabályozza, mely SQLGetData kiterjesztéseket engedélyezi a driver. |
Nincs |
HostnameInCertificate |
18.0 | Megadja a szerver TLS tanúsítványában érvényesítendő hosztnevet. | Nincs |
IpAddressPreference |
18.1 | Megadja az IP-címcsaládot, amit az illesztőprogram először próbál. | Nincs |
LongAsMax |
18.0 | A hosszú adattípusokat a max megfelelőikhez képezi le. |
Nincs |
MultipleActiveResultSets |
18,7 | Lehetővé teszi több aktív eredményhalmazt (MARS). Elfogadja Yes vagy No. |
MARS_Connection kulcsszó |
RetryExec |
18.1 | Újrapróbálkozási szabályokat konfigurál sikertelen lekérdezésekre. | Nincs |
ServerCertificate |
18.1 | Megadja a tanúsítványfájlt, amely megfelel a szerver tanúsítványának használatában.Encrypt=Strict |
Nincs |
WorkstationID |
18,7 | Megadja a szervernek küldött munkaállomás nevét. |
WSID kulcsszó |
MultipleActiveResultSets, WorkstationID, és FailoverPartner olyan aliasok, amelyek az ODBC kulcsszóneveket a Microsoft.Data.SqlClient tulajdonságnevekhez igazítják. A 18-as verzió elfogadja a régebbi neveket is. Részletekért lásd: Connection string kulcsszó egységezés és ConnectTimeout kulcsszó.
A teljes kulcsszó hivatkozásért lásd az ODBC DSN és a kapcsolati karakterlánc kulcsszavakat.