Sto sviluppando una semplice applicazione C#, mi piacerebbe sapere questo: quando collego la mia applicazione a SQL Server sul mio PC, conosco la stringa di connessione (nome del server, password ecc.), Ma quando la connetto su un altro PC, la stringa di connessione di SQL Server è diversa. Esiste un account comune in SQL Server fornito con un account predefinito che può connettersi? Ho sentito parlare dell'account sa
in SQL Server, che cos'è sa
?Come impostare la stringa di connessione di SQL Server?
risposta
Sono una serie di elementi di cui preoccuparsi quando ci si connette a SQL Server su un'altra macchina.
- Indirizzo host/IP della macchina
- catalogo iniziale (nome del database)
- nome utente valido/password
Molto spesso SQL Server può essere eseguito come intance default, significa che è possibile basta specificare l'hostname/indirizzo IP ma si può incontrare uno scenario in cui è in esecuzione come un'istanza denominata (Sql Express per esempio). In questo scenario dovrai specificare nomehost \ nome istanza.
È necessario comprendere che un server di database o un DBA non vogliono che chiunque sia in grado di connettersi o modificare il contenuto del server. Questo è l'intero scopo degli account di sicurezza. Se un singolo nome utente/pwd funzionasse su qualsiasi macchina, non fornirebbe alcuna protezione. Quella cosa "sa" che hai sentito, non funziona con SQL Server 2005, 2008 o 2012. Non sono sicuro delle versioni precedenti. Credo che nei primi tempi di SQL Server, il nome utente e il pwd predefiniti fossero sa/sa, ma non è più così.
FYI, la sicurezza del database e i ruoli sono molto più complicati al giorno d'oggi. Si consiglia di esaminare i dettagli dell'autenticazione basata su Windows. Se SQL Server è configurato per questo, non è necessario alcun nome utente/pwd nella stringa di connessione per connettersi ad esso. Tutto quello che devi cambiare è il nome della macchina del server e la stessa stringa di connessione funzionerà con entrambe le macchine, dato che entrambi hanno lo stesso nome db, ovviamente.
sa è l'account sysadmin per SQL Server. Se è stato installato con autenticazione SQL Server o Autenticazione in modalità mista, è necessario impostare un account sa. Per riferimento futuro, [ecco una guida] (https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode) su come impostare il un account se non è stato installato con l'autenticazione di SQL Server attivata. – kennycoc
È possibile utilizzare l'autenticazione di Windows, se il server è nel dominio o l'autenticazione Sql. Sa - è un amministratore di sistema, l'account di root per l'autenticazione del server SQL. Ma è una cattiva pratica da usare se per connettere i tuoi clienti. Dovresti creare i tuoi account e usarli per connettersi al tuo SQL. In ogni connessione si imposta accesso account, la sua password e il database predefinito, si desidera connettersi.
// .NET DataProvider - Collegamento standard con username e password
using System.Data.SqlClient;
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"User id=UserName;" +
"Password=Secret;";
conn.Open();
// .NET DataProvider - Trusted Connection
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"Integrated Security=SSPI;";
conn.Open();
Come posso utilizzare questo formato ma utilizzare un utente di dominio? Continuo a ricevere una sottolineatura rossa quando uso 'id utente = Dominio \ Uname' penso che sia qualcosa a che fare con caratteri di escape non validi, come dovrei farlo correttamente? –
@Wairimu Murigi Devi sfuggire alla barra rovesciata i.e id utente = Dominio \\ Uname –
Una buona risorsa è ConnectionString.com, dove si trova non solo le stringhe di connessione di SQL Server, ma una moltitudine di altre stringhe di connessione db.
.NET Data Provider - Default Percorso relativo - Collegamento standard
using System.Data.SqlClient;
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"User Id=UserName;" +
"Password=Secret;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();
.Provider di dati NET - Default Percorso relativo - connessione trusted
using System.Data.SqlClient;
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
.NET Data Provider - Custom percorso relativo - Collegamento standard
using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"User Id=UserName;" +
"Password=Secret;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
.NET Data Provider - Custom percorso relativo - connessione trusted
using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
sa
è un account di amministratore di sistema che viene fornito con sql server per impostazione predefinita. Come sai potrebbe già sapere, è possibile utilizzare due modi per accedere a SQL Server.
Pertanto ci sono stringhe di connessione che adatto per ogni scenario (come l'autenticazione finestre, LocalDB ecc). Utilizzare https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver per creare la stringa di connessione. Questi sono tag xml. Hai solo bisogno di valore di connectionString
Non si desidera mai utilizzare un nome utente e una password di account predefiniti per configurare l'accesso a SQL Server o qualsiasi tipo di connessione. – jordanhill123
'SA' sta nel ruolo sql server' sys_admin' – Elshan
È possibile utilizzare l'autenticazione di Windows anziché l'autenticazione di SQL Server? Ciò eviterebbe di dover usare userid e password del tutto. –