Sintassi della stringa di connessione
Ogni provider di dati .NET Framework include un oggetto Connection
che eredita da DbConnection oltre a una proprietà ConnectionString specifica del provider. La sintassi della stringa di connessione specifica per ogni provider è documentata in questa proprietà ConnectionString
. Nella tabella seguente sono elencati i quattro provider di dati inclusi in .NET Framework.
Provider di dati .NET Framework | Descrizione |
---|---|
System.Data.SqlClient | Consente l'accesso ai dati per Microsoft SQL Server. Per altre informazioni sulla sintassi della stringa di connessione, vedere ConnectionString. |
System.Data.OleDb | Offre accesso ai dati per le origini dati esposte tramite OLE DB. Per altre informazioni sulla sintassi della stringa di connessione, vedere ConnectionString. |
System.Data.Odbc | Offre accesso ai dati per le origini dati esposte tramite ODBC. Per altre informazioni sulla sintassi della stringa di connessione, vedere ConnectionString. |
System.Data.OracleClient | Offre accesso ai dati per Oracle 8.1.7 o versione successiva. Per altre informazioni sulla sintassi della stringa di connessione, vedere ConnectionString. |
Generatori di stringhe di connessione
In ADO.NET 2.0 sono stati introdotti i generatori di stringhe di connessione seguenti per i provider di dati .NET Framework.
- SqlConnectionStringBuilder
- OleDbConnectionStringBuilder
- OdbcConnectionStringBuilder
- OracleConnectionStringBuilder
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
L'autenticazione di Windows (a volte definita sicurezza integrata) può essere utilizzata per connettersi alle origini dati che la supportano. La sintassi usata nella stringa di connessione varia a seconda del provider. La tabella seguente illustra la sintassi dell'autenticazione di Windows usata con i provider di dati .NET Framework.
Provider | Sintassi |
---|---|
SqlClient |
Integrated Security=true; -- or -- Integrated Security=SSPI; |
OleDb |
Integrated Security=SSPI; |
Odbc |
Trusted_Connection=yes; |
OracleClient |
Integrated Security=yes; |
Nota
Integrated Security=true
genera un'eccezione se usata con il provider OleDb
.
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.
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. Per eseguire la connessione a una versione precedente di SQL Server, è necessario usare il provider di dati .NET Framework per OleDb (System.Data.OleDb). La maggior parte delle parole chiave delle stringhe di connessione sono inoltre mappate alle proprietà dell'oggetto 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"
"Persist Security Info=False;Integrated Security=SSPI;
database=AdventureWorks;server=(local)"
"Persist Security Info=False;Trusted_Connection=True;
database=AdventureWorks;server=(local)"
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.
Autenticazione di SQL Server con SqlClient
L'autenticazione di Windows è il sistema consigliato per le connessioni a SQL Server (in locale). 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"
Quando ci si connette al database SQL di Azure o ad Azure SQL Data Warehouse e si specifica un account di accesso nel formato user@servername
, assicurarsi che il valore servername
nell'account di accesso corrisponda al valore specificato per Server=
.
Nota
L'autenticazione di Windows ha la precedenza sugli account di accesso di SQL Server. Se si specifica Integrated Security=true
oltre a un nome utente e una password, il nome utente e la password vengono ignorati e viene utilizzata l'autenticazione di Windows.
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.
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 sulla parola chiave SqlConnection.ConnectionString, vedere Type System Version
.
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 parola chiave TrustServerCertificate
è valida solo quando ci si connette a un'istanza di SQL Server con un certificato valido. Se TrustServerCertificate
è impostata su true
, il livello trasporto userà SSL per crittografare il canale e ignorerà l'analisi della catena di certificati per la convalida dell'attendibilità.
"TrustServerCertificate=true;"
Nota
Se TrustServerCertificate
è impostata su true
e la crittografia è attivata, il livello di crittografia specificato nel server verrà usato anche se Encrypt
è impostato su false
nella stringa di connessione. In caso contrario, la connessione non riuscirà.
Abilitare la crittografia
Per attivare la crittografia quando non è stato eseguito il provisioning di un certificato nel server, è necessario che le opzioni Forza crittografia protocollo e Considera attendibile certificato server siano impostate in Gestione configurazione SQL Server. In questo caso, la crittografia utilizzerà un certificato server autofirmato senza convalida se 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 e l'opzione Forza crittografia protocollo non è stata configurata per il client. Tuttavia, se TrustServerCertificate
non è attivata nella configurazione client, è comunque necessario il provisioning di un certificato server.
La tabella seguente descrive tutti i casi.
Impostazione client Forza crittografia protocollo | Impostazione client Considera attendibile certificato server | Attributo/stringa di connessione Encrypt/Use Encryption for Data | Attributo/stringa di connessione Trust Server Certificate | Risultato |
---|---|---|---|---|
No | N/D | Nessuno (impostazione predefinita) | Ignorato | Nessuna crittografia. |
No | N/D | Sì | Nessuno (impostazione predefinita) | La crittografia viene applicata solo se è disponibile un certificato server verificabile; in caso contrario, il tentativo di connessione non riesce. |
No | N/D | Sì | Sì | La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato. |
Sì | No | Ignorato | Ignorato | La crittografia viene applicata solo se è disponibile un certificato server verificabile; in caso contrario, il tentativo di connessione non riesce. |
Sì | Sì | Nessuno (impostazione predefinita) | Ignorato | La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato. |
Sì | Sì | Sì | Nessuno (impostazione predefinita) | La crittografia viene applicata solo se è disponibile un certificato server verificabile; in caso contrario, il tentativo di connessione non riesce. |
Sì | Sì | Sì | Sì | La crittografia viene sempre applicata, ma può essere utilizzato un certificato server auto-firmato. |
Per altre informazioni, vedere Uso della crittografia senza convalida.
Stringhe di connessione OleDb
La proprietà ConnectionString di un oggetto OleDbConnection consente di ottenere o impostare una stringa di connessione per un'origine dati OLE DB quale Microsoft Access. È anche possibile creare una stringa di connessione OleDb
in fase di esecuzione usando la classe OleDbConnectionStringBuilder.
Sintassi della stringa di connessione OleDb
È necessario specificare il nome di un provider per una stringa di connessione OleDbConnection. La seguente stringa di connessione consente di connettersi a un database Microsoft Access usando il provider Jet. Si noti che le parole chiave User ID
e Password
sono facoltative se il database non è protetto (impostazione predefinita).
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\Northwind.mdb;User ID=Admin;Password=;
Se il database Jet è protetto tramite sicurezza a livello utente, è necessario specificare il percorso del file di informazioni sul gruppo di lavoro, con estensione mdw. Il file di informazioni sul gruppo di lavoro viene usato per convalidare le credenziali fornite nella stringa di connessione.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb;Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****;
Importante
È possibile fornire informazioni di connessione per un oggetto OleDbConnection in un file UDL (Universal Data Link). Si consiglia, tuttavia, di evitare questa procedura. I file UDL non sono crittografati, pertanto espongono le informazioni nella stringa di connessione come testo non crittografato. Poiché per l'applicazione si tratta di una risorsa esterna basata su file, un file UDL non può essere protetto tramite .NET Framework. I file UDL non sono supportati per SqlClient.
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.
Uso di DataDirectory per la connessione a Access/Jet
DataDirectory
non è riservata esclusivamente a SqlClient
. Può essere usata anche con i provider di dati .NET System.Data.OleDb e System.Data.Odbc. Nell'esempio seguente la stringa OleDbConnection indica la sintassi richiesta per connettersi al database Northwind.mdb situato nella cartella app_data dell'applicazione. In tale percorso è archiviato anche il database di sistema (System.mdw).
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|\Northwind.mdb;
Jet OLEDB:System Database=|DataDirectory|\System.mdw;"
Importante
Se il database Acces/Jet non è protetto, non è necessario specificare il percorso del database di sistema nella stringa di connessione. La sicurezza è disattivata per impostazione predefinita, con tutti gli utenti che si connettono come utente Admin incorporato con una password vuota. Anche quando la sicurezza a livello di utente è implementata correttamente, un database Jet rimane vulnerabile agli attacchi. Pertanto, considerando la debolezza intrinseca dello schema di sicurezza basato su file dei database Access/Jet, si sconsiglia di archiviare informazioni sensibili in tali database.
Connessione a Excel
Il provider Microsoft Jet viene usato per la connessione a una cartella di lavoro Excel. Nella seguente stringa di connessione la parola chiave Extended Properties
imposta le proprietà specifiche di Excel. "HDR=Yes;" indica che la prima riga contiene nomi di colonne e non dati, mentre "IMEX=1;" indica al driver di leggere sempre come testo colonne di dati misti.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""
Si noti che le virgolette doppie richieste per Extended Properties
devono essere racchiuse a loro volta tra virgolette doppie.
Sintassi della stringa di connessione di Data Shape Provider
Con il provider Microsoft Data Shape Provider, usare le parole chiave Provider
e Data Provider
. Nell'esempio seguente viene usato il provider Shape per eseguire la connessione a un'istanza locale di SQL Server.
"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;"
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.
Stringhe di connessione Odbc
La proprietà ConnectionString di un oggetto OdbcConnection consente di ottenere o impostare una stringa di connessione per un'origine dati OLE DB. Le stringhe di connessione ODBC sono supportate anche da OdbcConnectionStringBuilder.
Nella seguente stringa di connessione viene usato il driver Microsoft per file di testo.
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin
Stringhe di connessione Oracle
La proprietà ConnectionString di un oggetto OracleConnection consente di ottenere o impostare una stringa di connessione per un'origine dati OLE DB. Le stringhe di connessione Oracle sono supportate anche da OracleConnectionStringBuilder.
Data Source=Oracle9i;User ID=*****;Password=*****;
Per altre informazioni sulla sintassi delle stringhe di connessione ODBC, vedere ConnectionString.
Importante
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Se ci si connette ad Azure SQL, le Identità gestite per le risorse Azure sono il metodo di autenticazione consigliato.