Come impostare la stringa di connessione di SQL Server?


93

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 collego ad un altro PC, la stringa di connessione di SQL Server è diversa. Esiste un account comune in SQL Server fornito con un account predefinito in grado di connettersi? Ho sentito parlare di saaccount in SQL Server, che cos'è sa?


5
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 per quella materia.
jordanhill123

4
SAsys_adminruolo medio del server sql
Elshan

2
È possibile utilizzare l'autenticazione di Windows invece dell'autenticazione di SQL Server? Ciò eviterebbe di dover utilizzare del tutto userid e password.
Philip Sheard

Risposte:


128

.NET DataProvider: connessione standard con nome utente 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: connessione affidabile

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "Integrated Security=SSPI;";
conn.Open();

Fare riferimento al doc .


1
Come posso utilizzare questo formato ma utilizzare un utente di dominio? Continuo a ricevere una sottolineatura rossa quando uso user id=Domain\Unamepenso che abbia a che fare con caratteri di escape non validi, come dovrei farlo correttamente?
Wairimu Murigi

1
@Wairimu Murigi Devi sfuggire alla barra rovesciata, ad esempio ID utente = Dominio \\ Uname
John Hartley,

1
@Itachi: scusa per il necropost. Lo inseriamo nella riga di comando di Windows utilizzando SQLCMD?
MSIS

1
La mia password contiene ;caratteri
Kiquenet

1
@Kiquenet Si potrebbe provare virgolette singole o doppie per avvolgerlo, controllare questo fuori.
Itachi,

30

In realtà puoi usare la SqlConnectionStringBuilderclasse per costruire la tua stringa di connessione . Per costruire la stringa di connessione , è necessario creare un'istanza di un oggetto da quello SqlConnectionStringBuildere impostare le loro proprietà con i parametri utilizzati per connettersi al DataBase. Quindi puoi ottenere la stringa di connessione dalla ConnectionStringproprietà SqlConnectionStringBuilderdall'oggetto, come mostrato in questo esempio:

Per esempio:

    SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

Puoi usare l' newoperatore per farlo direttamente.

Per esempio:

SqlConnection conn = new SqlConnection(
    new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString
);

È possibile aggiungere più parametri per creare la stringa di connessione . Ricorda che i parametri sono definiti dai valori impostati nelle SqlConnectionStringBuilderproprietà dell'oggetto.

Inoltre è possibile ottenere la stringa di connessione al database dalla connessione di Microsoft Visual Studio con il DB allegato. Quando si seleziona il DB, nel pannello delle proprietà viene mostrata la stringa di connessione .

L'elenco completo delle proprietà della SqlConnectionStringBuilderclasse è elencato in questa pagina dal sito Microsoft MSDN.

Circa l'utente predefinito di SQL Server, sa significa "amministratore di sistema" e la sua password varia a seconda della versione di SQL Server. In questa pagina puoi vedere come varia la password.

Utente SQL Server 2008 / R2 Express: sa Password: [password vuota - lasciare il campo vuoto per connettersi]

Utente SQL Server 201x Express: sa Password: Password123

SQL Server 20xx Web o Utente standard: sa Password: sarà la stessa dell'amministratore o della password dell'utente root al momento del provisioning di VDS.

È possibile accedere con un utente sa in questa finestra di accesso all'avvio di Gestione database di SQL Server. Come in questa immagine:

Accedi esempio


15

Provider di dati .NET - Percorso relativo predefinito - Connessione 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 - Percorso relativo predefinito - Connessione attendibile

 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();

Provider di dati .NET - Percorso relativo personalizzato - Connessione 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();  

Provider di dati .NET - Percorso relativo personalizzato - Connessione attendibile

 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();

11

È possibile utilizzare la stringa di connessione come segue ed è sufficiente aggiungere il nome del database.

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";

8

Sono una serie di cose di cui preoccuparsi quando ci si connette a SQL Server su un'altra macchina.

  • Indirizzo host / IP della macchina
  • Catalogo iniziale (nome database)
  • Nome utente / password validi

Molto spesso il server SQL può essere eseguito come impostazione predefinita, il che significa che è possibile specificare semplicemente il nome host / indirizzo ip, ma è possibile che si verifichi uno scenario in cui viene eseguito come istanza denominata (ad esempio Sql Express). In questo scenario dovrai specificare nome host \ nome istanza.


6

È necessario comprendere che un server di database o un DBA non vorrebbe che chiunque fosse in grado di connettersi o modificare i contenuti 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 "una" cosa di cui hai sentito parlare, non funziona con SQL Server 2005, 2008 o 2012. Tuttavia, non sono sicuro delle versioni precedenti. Credo che da qualche parte nei primi giorni di SQL Server, il nome utente e il pwd predefiniti fossero sa / sa, ma non è più così.

Cordiali saluti, la sicurezza del database e i ruoli sono molto più complicati oggigiorno. Potresti voler esaminare i dettagli dell'autenticazione basata su Windows. Se il tuo SQL Server è configurato per questo, non hai bisogno di alcun nome utente / pwd nella stringa di connessione per connetterti ad esso. Tutto quello che devi cambiare è il nome della macchina server e la stessa stringa di connessione funzionerà con entrambe le tue macchine, dato che entrambe hanno lo stesso nome db ovviamente.


1
sa è l'account sysadmin per SQL Server. Se è stato installato con l'autenticazione del server sql o l'autenticazione in modalità mista, è necessario configurare un account sa. Per riferimento futuro, ecco una guida su come configurare l'account sa se non è stato installato con l'autenticazione del server sql attivata.
iCodeSometime

6

Puoi utilizzare l'autenticazione di Windows, se il tuo server è nel dominio, o l'autenticazione Sql. Sa - è un amministratore di sistema, l'account 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 connetterti al tuo SQL. In ogni connessione si imposta l' account di accesso , la relativa password e il database predefinito che si desidera connettere.


6

saè un account amministratore di sistema fornito con sql server per impostazione predefinita. Come forse già saprai, puoi utilizzare due modi per accedere a SQL Server.

screenshot di SQL Server Management Studio

Pertanto ci sono stringhe di connessione adatte a ogni scenario (come l'autenticazione di Windows, localdb ecc.). Utilizza 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 del valore di connectionString


4

Possiamo semplicemente connetterci al database:

 uid=username;pwd=password;database=databasename;server=servername

Per esempio:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);

-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

Prova questo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.