Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Denna artikel beskriver brytande ändringar mellan Microsoft ODBC Driver 18 för SQL Server och version 17.
De flesta applikationer som uppgraderar från version 17 till version 18 påverkas av en enda ändring: anslutningar är krypterade som standard. Om din applikation slutar ansluta efter uppgraderingen, läs först Standardkrypteringsbeteendet.
Sammanfattning av ändringarna
| Area | Version 17 | Version 18 och senare versioner |
|---|---|---|
Standardinställning Encrypt |
no |
yes |
Encrypt Accepterade värden |
yes, no |
yes, no, Mandatory, Optional, Strict |
| Krypteringslägen | Av eller på | Av, på eller strikt |
| Verifiering av servercertifikat | Det sker inte om du inte begär kryptering | Sker som standard, eftersom kryptering är påslagen som standard |
| Nyckelord för anslutningssträng | Basmängd | Basuppsättning plus nya nyckelord |
Krypteringsändringar
Standardkrypteringsbeteende
I version 17 är anslutningarna inte krypterade om du inte ber om kryptering eller servern kräver det. I version 18 och senare versioner är anslutningar krypterade som standard.
Eftersom drivrutinen validerar servercertifikatet varje gång den krypterar en anslutning, ansluter en applikation som ansluter till en server med ett självsignerat eller på annat sätt obetrodd certifikat framgångsrikt med version 17 och misslyckas med version 18. Felet är ett certifikatvalideringsfel, inte ett autentiseringsfel.
Du har tre sätt att lösa det, listade från mest till minst säkert:
- Installera ett certifikat på servern som klienten litar på. Detta alternativ rekommenderas och det är det enda som behåller både kryptering och validering.
- Behåll krypteringen på och tala om för drivrutinen vilket namn som ska valideras, genom att sätta
HostNameInCertificateellerServerCertificate. - Stäng av kryptering för att återställa version 17:s standard, genom att lägga till
Encrypt=noi reťazec pripojenia.
Caution
Inställningen TrustServerCertificate=yes håller anslutningen krypterad men inaktiverar certifikatvalidering, vilket lämnar anslutningen öppen för attacker från angriparen i mitten. Föredra ett betrodd certifikat.
Kryptera värden
Version 17 accepterar endast yes och no. Version 18 och senare versioner accepterar dessa värden och lägger till tre till:
| Value | Likvärdig med | Behavior |
|---|---|---|
Mandatory |
yes |
Anslutningen är krypterad. |
Optional |
no |
Anslutningen är inte krypterad om inte servern kräver det. |
Strict |
Ingen | Anslutningen använder TDS 8.0-kryptering. |
Strict har ingen motsvarande version 17. Det är det enda värdet som väljer TDS 8.0, där kryptering förhandlas före inloggningsutbytet istället för under det.
Återställ version 17:s krypteringsbeteende
För att återställa version 17:s standardbeteende, sätt Encrypt uttryckligen:
Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;
Att sätta värdet explicit är fördelaktigt även på version 17, eftersom det gör att reťazec pripojenia beter sig likadant på båda versionerna.
Nya nyckelord för reťazec pripojenia
Version 18 lägger till följande reťazec pripojenia-nyckelord, som version 17 inte känner igen:
| Keyword | Purpose |
|---|---|
ConcatNullYieldsNull |
Kontrollerar om sammanfogning av ett nollvärde ger noll. |
GetDataExtensions |
Styr vilket SQLGetData som förlänger drivrutinen aktiverar. |
HostNameInCertificate |
Specificerar värdnamnet som ska valideras i serverns TLS-certifikat. |
IpAddressPreference |
Specificerar vilken IP-adressfamilj drivrutinen försöker först. |
LongAsMax |
Mappar långa datatyper till deras max motsvarigheter. |
RetryExec |
Konfigurerar omprövningsregler för misslyckade frågor. |
ServerCertificate |
Specificerar vägen till en certifikatfil för att validera servern mot. |
Individuella nyckelord introducerades i olika version 18-utgåvor. För utgåvan som introducerade varje nyckelord, och för fullständig nyckelordsreferens, se ODBC DSN och reťazec pripojenia-nyckelord.