Sintassi della stringa di connessione
Si applica a: .NET Framework .NET .NET Standard
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 suFalse
e il certificato server non viene convalidato. - A partire dalla versione 2.0 di Microsoft.Data.SqlClient, anche se
Encrypt
è impostatoFalse
, 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 suStrict
. 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 | Sì | 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