Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive le modifiche improvvise tra il driver ODBC 18 di Microsoft per SQL Server e la versione 17.
La maggior parte delle applicazioni che aggiornano dalla versione 17 alla versione 18 è influenzata da una singola modifica: le connessioni sono crittografate di default. Se la tua applicazione smette di connettersi dopo l'aggiornamento, leggi prima Comportamento di crittografia predefinito .
Riepilogo delle modifiche
| Area | Versione 17 | Versione 18 e versioni successive |
|---|---|---|
Impostazione predefinita Encrypt |
no |
yes |
Encrypt Valori accettati |
yes, no |
yes, no, Mandatory, Optional, Strict |
| Modalità di crittografia | A intermittenza o a scena | Spenta, accesa o rigida |
| Convalida certificato del server | Non succede a meno che tu non richieda la crittografia | Succede di default, perché la crittografia è attiva di default |
| Parole chiave per le stringhe di connessione | Set base | Set base più nuove parole chiave |
Modifiche alla crittografia
Comportamento di crittografia predefinito
Nella versione 17, le connessioni non sono criptate a meno che tu non chieda la crittografia o che il server non la richieda. Nella versione 18 e successive, le connessioni sono crittografate di default.
Poiché il driver convalida il certificato del server ogni volta che cripta una connessione, un'applicazione che si collega a un server con un certificato autofirmato o altrimenti non affidabile si collega con successo con la versione 17 e fallisce con la versione 18. Il guasto è un errore di validazione del certificato, non un errore di autenticazione.
Hai tre modi per risolverlo, elencati dal più al meno sicuro:
- Installa un certificato sul server di cui il client si fida. Questa opzione è quella consigliata, ed è l'unica che mantiene sia la crittografia che la validazione.
- Mantieni attivo la crittografia e indica al driver quale nome validare, impostando
HostNameInCertificateoServerCertificate. - Disattiva la crittografia per ripristinare il valore predefinito della versione 17, aggiungendo
Encrypt=noalla stringa di connessione.
Caution
Impostare TrustServerCertificate=yes mantiene la connessione crittografata ma disabilita la validazione dei certificati, il che lascia la connessione aperta ad attacchi di tipo avversario nel mezzo. Preferisci un certificato affidabile.
Valori di crittografia
La versione 17 accetta solo yes e no. La versione 18 e le versioni successive accettano quei valori e ne aggiungono altri tre:
| Value | Equivalente a | Behavior |
|---|---|---|
Mandatory |
yes |
La connessione è criptata. |
Optional |
no |
La connessione non è criptata a meno che il server non lo richieda. |
Strict |
Nessuno | La connessione utilizza la crittografia TDS 8.0. |
Strict non ha equivalenti alla versione 17. È l'unico valore che seleziona TDS 8.0, dove la crittografia viene negoziata prima dello scambio di login piuttosto che durante esso.
Ripristina il comportamento di crittografia della versione 17
Per ripristinare il comportamento predefinito della versione 17, imposta Encrypt esplicitamente:
Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;
Impostare esplicitamente il valore è vantaggioso anche nella versione 17, perché fa sì che la stringa di connessione si comporti allo stesso modo su entrambe le versioni.
Nuove parole chiave per stringa di connessione
La versione 18 aggiunge le seguenti parole chiave stringa di connessione, che la versione 17 non riconosce:
| Keyword | Purpose |
|---|---|
ConcatNullYieldsNull |
Determina se la concatenazione di un valore nullo produca nulla. |
GetDataExtensions |
Controlla quali SQLGetData estensioni il driver abilita. |
HostNameInCertificate |
Specifica il nome host da validare nel certificato TLS del server. |
IpAddressPreference |
Specifica la famiglia di indirizzi IP che il driver prova per primo. |
LongAsMax |
Mappa i tipi di dati lunghi ai loro max equivalenti. |
RetryExec |
Configura le regole di ritentativo per query fallite. |
ServerCertificate |
Specifica il percorso verso un file certificato contro cui convalidare il server. |
Le singole parole chiave sono state introdotte in diverse versioni della versione 18. Per la release che ha introdotto ogni parola chiave e per il riferimento completo alla parola chiave, vedi ODBC DSN e le parole chiave stringa di connessione.