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.
Si applica a: SQL Server 2022 (16.x)
Database Azure SQL
Istanza gestita di SQL di Azure
SQL Server 2022 (16.x), Database SQL di Azure e Istanza gestita di SQL di Azure supportano TDS (Tabular Data Stream) 8.0.
Il protocollo TDS (Tabular Data Stream) è un protocollo del livello applicazione usato dai client per connettersi a SQL Server. SQL Server usa Transport Layer Security (TLS) per crittografare i dati trasmessi attraverso una rete tra un'istanza di SQL Server e un'applicazione client.
TDS è un protocollo sicuro, ma nelle versioni precedenti di SQL Server la crittografia potrebbe essere disattivata o non abilitata. Per soddisfare gli standard di crittografia obbligatoria durante l'uso di SQL Server, è stata introdotta un'iterazione del protocollo TDS: TDS 8.0.
L'handshake TLS precede ora tutti i messaggi TDS, avvolgendo la sessione TDS in TLS per applicare la crittografia, allineando TDS 8.0 con HTTPS e altri protocolli web. Questo miglioramento contribuisce in modo significativo alla gestibilità del traffico TDS, poiché le appliance di rete standard sono ora in grado di filtrare e passare in modo sicuro le query SQL.
Un vantaggio per TDS 8.0 rispetto alle versioni precedenti di TDS è la compatibilità con TLS 1.3 e gli standard TLS da venire. TDS 8.0 è anche completamente compatibile con TLS 1.2 e versioni precedenti di TLS.
Come funziona TDS
Il protocollo Tabular Data Stream (TDS) è un protocollo a livello di applicazione usato per il trasferimento di richieste e risposte tra client e sistemi server di database. Il sistema client stabilisce in genere una connessione di lunga durata con il server. Dopo aver stabilito la connessione usando un protocollo a livello di trasporto, i messaggi TDS vengono scambiati per comunicare tra il client e SQL Server.
Per tutta la durata della sessione TDS, esistono tre fasi:
- Inizializzazione
- Autenticazione
- Scambio di dati
La crittografia viene negoziata durante la fase iniziale, ma la negoziazione TDS avviene su una connessione non crittografata. La connessione di SQL Server è simile alla seguente per le versioni precedenti a TDS 8.0:
Handshake TCP ➡️ Pre-accesso TDS (testo non crittografato) e risposta (testo non crittografato) ➡️ Handshake TLS ➡️ Autenticazione (crittografata) ➡️ Scambio dati (può essere crittografato o non crittografato)
Con l'introduzione di TDS 8.0, le connessioni di SQL Server avvengono come indicato di seguito:
Handshake TCP ➡️ Handshake TLS ➡️ Pre-accesso TDS (crittografato) e risposta (crittografata) ➡️ Autenticazione (crittografata) ➡️ Scambio di dati (crittografato)
Matrice di compatibilità per le opzioni TDS, TLS, sistema operativo e crittografia
È possibile abilitare entrambe le versioni tls 1.2 e TLS 1.3 a livello di sistema operativo, che consente alle connessioni client a SQL Server di usare più versioni del protocollo TDS (TDS 7.x e 8.0). A seconda della versione del sistema operativo, TLS 1.2 e TLS 1.3 potrebbero essere abilitati per impostazione predefinita.
Solo TDS 7.x supporta la comunicazione non crittografata (facoltativa), TDS 8.0 non supporta questa operazione. TDS 7.x supporta la crittografia usando TLS fino alla versione 1.2. TDS 8.0 richiede la crittografia: tutto è sempre crittografato con TDS 8.0 (Encrypt=Strict). TDS 8.0 non ha requisiti minimi di versione TLS e supporta TLS 1.3. Il supporto di TLS 1.3 dipende dalla versione del sistema operativo. La tabella seguente riepiloga i vari scenari con le opzioni di crittografia e le versioni TDS e TLS corrispondenti.
| Encrypt opzione |
Versione TLS abilitata | Versione del sistema operativo | Previsto connessione risultato |
Note |
|---|---|---|---|---|
| Strict | Solo TLS 1.3 (o versione successiva) | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.3 negoziato; TDS 8.0 attivato (Encrypt=Strict) |
| Strict | TLS 1.2 e TLS 1.3 | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.3 negoziato; TDS 8.0 attivato (Encrypt=Strict) |
| Strict | Solo TLS 1.2 (o versioni precedenti) | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.2 negoziato; TDS 8.0 attivato (Encrypt=Strict) |
| Strict | Solo TLS 1.2 (o versioni precedenti) | Windows 10 Windows Server 2019/ 2016 |
Success | TLS 1.2 negoziato; TDS 8.0 attivato (TLS 1.3 non disponibile) |
| Obbligatorio | Solo TLS 1.3 (o versione successiva) | Windows 11 Windows Server 2022 e versioni successive |
Failure | Encrypt=Mandatory non è compatibile con TLS 1.3 per TDS 8.0 |
| Obbligatorio | TLS 1.2 e TLS 1.3 | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.2 negoziato; TDS 8.0 non attivato (Encrypt=Mandatory) |
| Obbligatorio | Solo TLS 1.2 (o versioni precedenti) | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.2 negoziato; TDS 8.0 non attivato (Encrypt=Mandatory) |
| Obbligatorio | Solo TLS 1.2 (o versioni precedenti) | Windows 10 Windows Server 2019/ 2016 |
Success | TLS 1.2 negoziato; TDS 8.0 non supportato in questo sistema operativo (usa TDS 7.x) |
| Opzionale | Solo TLS 1.3 (o versione successiva) | Windows 11 Windows Server 2022 e versioni successive |
Failure | Encrypt=Optional (false) è TDS 7.x, che non è compatibile con TLS 1.3. |
| Opzionale | TLS 1.2 e TLS 1.3 | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.3 negoziato; TDS 8.0 non attivato (Encrypt=Facoltativo) |
| Opzionale | Solo TLS 1.2 (o versioni precedenti) | Windows 11 Windows Server 2022 e versioni successive |
Success | TLS 1.2 negoziato; TDS 8.0 non attivato (Encrypt=Facoltativo) |
| Opzionale | Solo TLS 1.2 (o versioni precedenti) | Windows 10 Windows Server 2019/ 2016 |
Success | TLS 1.2 negoziato; crittografia facoltativa; la connessione può essere stabilita ottenere successo senza crittografia |
| Qualunque | Solo TLS 1.3 (o versione successiva) | Windows 10 Windows Server 2019/ 2016 |
Failure | TLS 1.3 non supportato in questo sistema operativo |
Per altre informazioni su come i client usano versioni TDS diverse, vedere la sezione Relativa all'utilizzo delle parole chiave nella sezione Modifiche alle proprietà di crittografia delle stringhe di connessione .
Supporto di SQL Server 2025
SQL Server 2025 (17.x) Preview introduce il supporto TDS 8.0 per i seguenti strumenti da riga di comando e funzionalità di SQL Server:
- SQL Server Agent
- Utilità sqlcmd
- utilità bcp
- SQL VSS Writer
- Servizio CEIP SQL
- PolyBase
- Gruppi di disponibilità AlwaysOn
- Istanza del cluster di failover AlwaysOn
- Server collegati1
- Replica transazionale1
- Replica di tipo merge1
- Replica snapshot1
- Trasferimento dei log1
1Il supporto TDS 8.0 introduce modifiche di rilievo a queste funzionalità.
Crittografia della connessione rigorosa
Per usare TDS 8.0, SQL Server 2022 (16.x) aggiunto strict come opzione di crittografia di connessione aggiuntiva ai driver di SQL Server (Encrypt=strict). Per usare il strict tipo di crittografia della connessione, scaricare la versione più recente dei driver .NET, ODBC, OLE DB, JDBC, PHP e Python:
- Microsoft ADO.NET per SQL Server e il Database SQL di Azure versione 5.1 o successive
- Driver ODBC per SQL Server versione 18.1.2.1 o successive
- Microsoft OLE DB Driver per SQL Server versione 19.2.0 o successiva
- Driver JDBC di Microsoft per SQL Server versione 11.2.0 o successive
- Driver di Microsoft per PHP per SQL Server versione 5.10 o successive
- Driver SQL per Python - pyodbc
Per evitare un attacco man-in-the-middle con la crittografia della connessione strict, gli utenti non possono impostare l'opzione TrustServerCertificate su true e consentire ogni certificato fornito dal server. Gli utenti, invece, usano l'opzione HostNameInCertificate per specificare il certificato ServerName che deve essere considerato attendibile. Il certificato fornito dal server deve superare la convalida del certificato. Per altre informazioni sulla convalida dei certificati, vedere Requisiti dei certificati per SQL Server
Funzionalità che non supportano l'uso forzato della crittografia strict
L'opzione Force Strict Encryption aggiunta con TDS 8.0 nella configurazione della rete di SQL Server impone a tutti i client l'uso di strict come tipo di crittografia. I client o le funzionalità senza la crittografia della connessione strict non riescono a connettersi a SQL Server.
Le seguenti funzionalità o strumenti usano ancora la versione precedente dei driver che non supportano TDS 8.0 e, di conseguenza, potrebbero non funzionare con la crittografia della connessione strict:
- Messaggi del database
Modifiche aggiuntive alle proprietà di crittografia della stringa di connessione
Le opzioni seguenti vengono aggiunte alle stringhe di connessione per crittografare la comunicazione:
| Parola chiave | Valore predefinito | Descrizione |
|---|---|---|
Encrypt |
falso |
Opzioni precedenti della stringa di connessione Le opzioni valide sono - trueo yes - false, o no. Per altre informazioni, vedere Sintassi della stringa di connessione. Quando true, SQL Server usa la crittografia TLS 1.2 per tutti i dati scambiati tra il client e il server se il server dispone di un certificato installato.Opzioni più recenti per la stringa di connessione Le opzioni valide sono - strict - mandatory, o trueo yes - optional, o falseo no. Se impostato su strict, SQL Server usa TDS 8.0 per tutti i dati scambiati tra il client e il server.Quando è impostato su mandatory, true o yes, SQL Server usa TDS 7.x con crittografia TLS/SSL per tutti i dati inviati tra il client e il server se nel server è installato un certificato.Quando è impostato su optional, false o no, la connessione usa TDS 7.x e viene crittografata solo se richiesto da SQL Server. |
TrustServerCertificate |
falso |
Opzione stringa di connessione precedente Se impostato su true (non consigliato), il driver non convalida il certificato TLS/SSL del server. Se true, il certificato TLS/SSL del server viene automaticamente considerato attendibile (ignorando la convalida) quando il livello di comunicazione viene crittografato tramite TLS.Se false, il driver convalida il certificato TLS/SSL del server. Se la convalida del certificato del server ha esito negativo, il driver genera un errore e chiude la connessione. Il valore predefinito è false. Perché una connessione TLS/SSL riesca, accertarsi che il valore passato a serverName corrisponda esattamente al Common Name (CN) o al nome DNS nel Subject Alternate Name nel certificato del server.Modifica del comportamento per Microsoft SQL Server ODBC Driver 18 e versioni successive Se Encrypt è impostato su strict, questa impostazione specifica il percorso del certificato da usare per la convalida del certificato server (corrispondenza esatta). Il driver supporta le estensioni file PEM, DER e CER.Se Encrypt è impostato su true o falsee la TrustServerCertificate proprietà non è specificata o impostata su null, trueo false, il driver usa il valore della ServerName proprietà nell'URL di connessione come nome host per convalidare il certificato TLS/SSL di SQL Server. |
HostNameInCertificate |
null |
Nome host da usare per la convalida del certificato TLS/SSL di SQL Server. Se la HostNameInCertificate proprietà non è specificata o impostata su null, il driver usa il valore della ServerName proprietà come nome host per convalidare il certificato TLS/SSL di SQL Server. |