Condividi tramite


Sintassi della stringa di connessione

Si applica a: .NET Framework .NET .NET Standard

Scarica ADO.NET

Microsoft.Data.SqlClient dispone di un oggetto Connection che eredita da DbConnection e una proprietà ConnectionString specifica del provider. La sintassi specifica della stringa di connessione per il provider SqlClient è documentata nella relativa proprietà ConnectionString. Per altre informazioni sulla sintassi della stringa di connessione, vedere ConnectionString.

Generatori di stringhe di connessione

Nel provider di dati Microsoft SqlClient per SQL Server è stato introdotto il generatore di stringhe di connessione riportato di seguito.

I generatori di stringhe di connessione consentono di costruire stringhe di connessione sintatticamente valide in fase di esecuzione, pertanto non è necessario concatenare manualmente i valori delle stringhe di connessione nel codice. Per altre informazioni, vedere Compilatori di stringhe di connessione.

Autenticazione di Windows

Si consiglia di usare l'autenticazione di Windows (definita anche sicurezza integrata) per connettersi alle origini dati che la supportano. Nella tabella seguente viene illustrata la sintassi di autenticazione di Windows utilizzata con il provider di dati Microsoft SqlClient per SQL Server.

Provider Sintassi
SqlClient Integrated Security=true;

-- or --

Integrated Security=SSPI;

Stringhe di connessione SqlClient

La sintassi per una stringa di connessione SqlConnection è documentata nella proprietà SqlConnection.ConnectionString. È possibile usare la proprietà ConnectionString per ottenere o impostare una stringa di connessione per un database di SQL Server. Le parole chiave della stringa di connessione sono inoltre mappate alle proprietà in SqlConnectionStringBuilder.

Importante

L'impostazione predefinita per la parola chiave Persist Security Info è false. Impostandola su true o yes, è possibile ottenere informazioni sensibili, compresi l'ID utente e la password, dalla connessione dopo che questa è stata aperta. Mantenere Persist Security Info impostata su false per assicurarsi che le origini non attendibili non abbiano accesso a informazioni sensibili sulle stringhe di connessione.

Autenticazione di Windows con SqlClient

Con tutti i tipi di sintassi seguenti viene usata l'autenticazione di Windows per stabilire la connessione al database AdventureWorks su un server locale.

"Persist Security Info=False;Integrated Security=true;  
    Initial Catalog=AdventureWorks;Server=MSSQL1;Encrypt=True;"  
"Persist Security Info=False;Integrated Security=SSPI;  
    database=AdventureWorks;server=(local);Encrypt=True;"  
"Persist Security Info=False;Trusted_Connection=True;  
    database=AdventureWorks;server=(local);Encrypt=True;"  

Autenticazione di SQL Server con SqlClient

L'autenticazione di Windows è il sistema consigliato per le connessioni a SQL Server. Se tuttavia è necessario usare l'autenticazione di SQL Server, usare la sintassi seguente per specificare un nome utente e una password. In questo esempio per rappresentare un nome utente e una password validi vengono usati asterischi.

"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer;Encrypt=True;"  

Quando ci si connette al database SQL di Azure o ad Azure Synapse Analytics e si specifica un nome utente nel formato user@servername, assicurarsi che il valore servername nel nome utente corrisponda al valore specificato per Server=.

Nota

L'autenticazione di Windows ha la precedenza sugli account di accesso di SQL Server. Se si specifica sia Integrated Security=true sia un nome utente e una password, questi ultimi saranno ignorati e sarà usata l'autenticazione di Windows.

Connettersi a un'istanza denominata di SQL Server

Per connettersi a un'istanza denominata di SQL Server, usare la sintassi nome server\nome istanza.

"Data Source=MySqlServer\MSSQL1;"  

È anche possibile impostare la proprietà DataSource di SqlConnectionStringBuilder sul nome dell'istanza quando si compila una stringa di connessione. La proprietà DataSource di un oggetto SqlConnection è di sola lettura.

Modifiche della parola chiave Type System Version

La parola chiave Type System Version in SqlConnection.ConnectionString specifica la rappresentazione lato client dei tipi di SQL Server. Per altre informazioni sull'uso della parola chiave Type System Version, vedere SqlConnection.ConnectionString.

Connettersi e collegarsi alle istanze utente di SQL Server Express

Le istanze utente sono una funzionalità di SQL Server Express. consentono a un utente che usa un account di Windows locale con privilegi minimi di collegarsi ed eseguire un database SQL Server senza la necessità di privilegi amministrativi. Un'istanza utente viene eseguita con le credenziali di Windows dell'utente, non come un servizio.

Per altre informazioni sull'utilizzo delle istanze utente, vedere Istanze utente di SQL Server Express.

Usare TrustServerCertificate

La TrustServerCertificate parola chiave viene usata per la connessione a un'istanza di SQL Server. Quando TrustServerCertificate è impostato su true, l'utente richiede che nel livello trasporto venga utilizzato TLS/SSL per crittografare il canale e ignorare il passaggio alla catena di certificati per convalidare l'attendibilità.

  • Nelle versioni precedenti a Microsoft.Data.SqlClient 2.0 questa impostazione viene ignorata quando Encrypt è impostata su False e il certificato server non viene convalidato.
  • A partire dalla versione 2.0 di Microsoft.Data.SqlClient, anche se Encrypt è impostato False, l'impostazione controlla se la convalida del certificato viene eseguita quando il server forza la crittografia.
  • A partire dalla versione 5.0 di Microsoft.Data.SqlClient, questa impostazione viene ignorata quando Encrypt è impostata su Strict. Il certificato del server viene sempre convalidato in modalità Strict.

Per altre informazioni, vedere Crittografia e convalida di certificati.

"TrustServerCertificate=true;"

HostNameInCertificate

A partire dalla versione 5.0 di Microsoft.Data.SqlClient, HostNameInCertificate è una nuova opzione di connessione. Quando il driver convalida i certificati del server, garantisce che il nome comune (Common Name, CN) o il nome alternativo soggetto (Subject Alternate Name, SAN) nel certificato corrisponda al nome del server a cui si è connessi. In alcuni casi, ad esempio gli alias DNS, il nome del server potrebbe non corrispondere al CN o al SAN. Il valore HostNameInCertificate può essere usato per specificare un CN o un SAN diverso nel certificato del server.

"HostNameInCertificate=myserver.example.com"

ServerCertificate

A partire dalla versione 5.1 di Microsoft.Data.SqlClient, ServerCertificate è una nuova opzione di connessione. Il valore predefinito dell'impostazione di ServerCertificate connessione è una stringa vuota. Quando Encrypt è impostato su Mandatory o Strict, ServerCertificate può essere usato per specificare un percorso nel file system in un file di certificato in modo che corrisponda al certificato TLS del server. Affinché il certificato sia valido, il certificato specificato deve essere una corrispondenza esatta. I formati di certificato accettati sono PEM, DER e CER. Ecco un esempio:

"Data Source=...;Encrypt=Strict;ServerCertificate=C:\certificates\server.cer"

Abilitare la crittografia

Per abilitare la crittografia quando non è stato fornito alcun certificato sul server, è necessario impostare la proprietà di connessione Trust Server CertificateTrue. In questo caso, la crittografia userà un certificato server autofirmato senza convalida, poiché nel server non è stato eseguito il provisioning di alcun certificato verificabile.

Le impostazioni delle applicazioni non possono ridurre il livello di sicurezza configurato in SQL Server, ma facoltativamente possono potenziarlo. Un'applicazione può richiedere la crittografia impostando le parole chiave TrustServerCertificate e Encrypt su true, garantendo che la crittografia venga applicata anche quando non è stato eseguito il provisioning di un certificato server. Se tuttavia l'opzione TrustServerCertificate non è attivata nella configurazione client, è comunque necessario il provisioning di un certificato server.

La tabella seguente descrive tutti i casi.

Crittografare la stringa di connessione o l'attributo Attributo/stringa di connessione Trust Server Certificate Risultato
No/Facoltativo Ignorato Nessuna crittografia.
Sì/Obbligatorio No La crittografia viene applicata solo se è disponibile un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.
Sì/Obbligatorio La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato.
Strict1 Ignorato La crittografia viene applicata sempre e deve usare un certificato server verificabile. In caso contrario, il tentativo di connessione non riesce.

1 La crittografia strict è disponibile solo a partire da Microsoft.Data.SqlClient versione 5.0.

Per altre informazioni, incluso il comportamento nelle versioni precedenti, vedere Crittografia e convalida dei certificati.

Vedi anche

Stringhe di connessione
Crittografia e convalida di certificati
Connessione a un'origine dati
Microsoft ADO.NET per SQL Server