Jak ustawić parametry połączenia SQL Server?

96

Tworzę prostą aplikację w języku C #, chciałbym wiedzieć: Kiedy podłączam moją aplikację do SQL Server na moim komputerze, znam parametry połączenia (nazwa serwera, hasło itp.), Ale kiedy podłączam ją do innego PC, parametry połączenia programu SQL Server są inne. Czy istnieje wspólne konto w programie SQL Server z domyślnym kontem, z którym można się połączyć? Słyszałem o sakoncie w SQL Server, co to jest sa?

Roshan
źródło
5
Nigdy nie chcesz używać domyślnej nazwy użytkownika i hasła do konta w celu skonfigurowania dostępu do programu SQL Server lub dowolnego typu połączenia w tym zakresie.
jordanhill123
4
SAśrednia sys_adminrola serwera sql
Elshan
2
Czy można używać uwierzytelniania systemu Windows zamiast uwierzytelniania programu SQL Server? Pozwoliłoby to w ogóle uniknąć konieczności używania identyfikatorów użytkowników i haseł.
Philip Sheard

Odpowiedzi:

130

.NET DataProvider - połączenie standardowe z nazwą użytkownika i hasłem

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 - zaufane połączenie

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

Zapoznaj się z dok .

Itachi
źródło
1
Jak mogę używać tego formatu, ale używać użytkownika domeny? Ciągle dostaję czerwone podkreślenie, gdy używam user id=Domain\Unamei myślę, że ma to coś wspólnego z nieprawidłowymi znakami ucieczki, jak mam to zrobić poprawnie?
Wairimu Murigi
1
@Wairimu Murigi Musisz uciec od ukośnika odwrotnego, tj. Identyfikator użytkownika = domena \\ Uname
John Hartley
1
@Itachi: Przepraszam za nekropostę. Czy wpisujemy to w wierszu poleceń systemu Windows za pomocą SQLCMD?
MSIS
1
Moje hasło zawiera ;postać
Kiquenet
1
@Kiquenet Możesz wypróbować pojedyncze lub podwójne cudzysłowy, aby to zawinąć, sprawdź to .
Itachi
30

Właściwie możesz użyć tej SqlConnectionStringBuilderklasy do zbudowania parametrów połączenia . Aby zbudować parametry połączenia , musisz utworzyć wystąpienie obiektu z tego SqlConnectionStringBuilderi ustawić jego właściwości za pomocą parametrów używanych do łączenia się z bazą danych. Następnie możesz pobrać parametry połączenia z ConnectionStringwłaściwości z SqlConnectionStringBuilderobiektu, jak pokazano w tym przykładzie:

Na przykład:

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

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

Możesz użyć newoperatora, aby zrobić to bezpośrednio.

Na przykład:

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

Możesz dodać więcej parametrów, aby zbudować parametry połączenia . Pamiętaj, że parametry są definiowane przez wartości ustawione we SqlConnectionStringBuilderwłaściwościach obiektu.

Możesz również pobrać parametry połączenia z bazą danych z połączenia Microsoft Visual Studio z dołączoną bazą danych. Po wybraniu bazy danych w panelu właściwości wyświetlane są parametry połączenia .

Pełna lista właściwości SqlConnectionStringBuilderklasy znajduje się na tej stronie w witrynie Microsoft MSDN.

O domyślnym użytkowniku SQL Server, sa oznacza „administrator systemu”, a jego hasło różni się w zależności od wersji SQL Server. Na tej stronie możesz zobaczyć, jak zmienia się hasło.

SQL Server 2008 / R2 Express User: sa Hasło: [puste hasło - pozostaw puste pole, aby się połączyć]

SQL Server 201x ekspresowe użytkownika: sa Hasło: password123

SQL Server 20xx Web or Standard User: sa Password: będzie takie samo, jak hasło administratora lub użytkownika root w momencie udostępnienia usługi VDS.

Możesz zalogować się ze sa użytkownika w oknie logowania na początku SQL Server menedżera bazy danych. Jak na tym obrazku:

Zaloguj się przykład

CryogenicNeo
źródło
15

Dostawca danych .NET - domyślna ścieżka względna - połączenie standardowe

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

Dostawca danych .NET - domyślna ścieżka względna - połączenie zaufane

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

Dostawca danych .NET - niestandardowa ścieżka względna - połączenie standardowe

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

Dostawca danych .NET - niestandardowa ścieżka względna - zaufane połączenie

 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();
Hemlata Gehlot
źródło
11

Możesz użyć parametrów połączenia w następujący sposób i wystarczy dodać nazwę bazy danych.

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";
Chamila Maddumage
źródło
8

Jest wiele rzeczy, o które należy się martwić podczas łączenia się z programem SQL Server na innym komputerze.

  • Adres hosta / IP urządzenia
  • Katalog początkowy (nazwa bazy danych)
  • Prawidłowa nazwa użytkownika / hasło

Bardzo często serwer SQL może działać jako domyślny, co oznacza, że ​​możesz po prostu określić nazwę hosta / adres IP, ale możesz napotkać scenariusz, w którym działa jako nazwana instancja (na przykład Sql Express). W tym scenariuszu musisz określić nazwę hosta \ nazwa instancji.

scartag
źródło
6

Możesz użyć uwierzytelniania systemu Windows, jeśli serwer znajduje się w domenie, lub uwierzytelniania Sql. Sa - jest administratorem systemu, kontem root do uwierzytelniania serwera SQL. Ale jest to zła praktyka, jeśli chodzi o oszukanie klientów. Powinieneś utworzyć własne konta i używać ich do łączenia się z SQL. W każdym połączeniu ustawiasz login konta , jego hasło i domyślną bazę danych , z którą chcesz się połączyć.

Alex
źródło
6

sato konto administratora systemu, które jest domyślnie dostarczane z serwerem sql. Jak już zapewne wiesz, możesz zalogować się do SQL Server na dwa sposoby.

zrzut ekranu programu SQL Server Management Studio

Dlatego istnieją parametry połączenia, które są odpowiednie dla każdego scenariusza (takie jak uwierzytelnianie systemu Windows, localdb itp.). Użyj https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver, aby zbudować parametry połączenia. To są tagi XML. Potrzebujesz tylko wartości connectionString

Menuka Ishan
źródło
5

Musisz zrozumieć, że serwer bazy danych lub DBA nie chciałby, aby ktokolwiek mógł się łączyć lub modyfikować zawartość serwera. To jest cały cel kont bezpieczeństwa. Jeśli pojedyncza nazwa użytkownika / pwd działałaby na dowolnej maszynie, nie zapewniałaby żadnej ochrony. To „to” rzecz, o której słyszałeś, nie działa z SQL Server 2005, 2008 lub 2012. Nie jestem jednak pewien co do poprzednich wersji. Wydaje mi się, że gdzieś na początku SQL Server domyślną nazwą użytkownika i pwd było sa / sa, ale już tak nie jest.

FYI, bezpieczeństwo baz danych i role są obecnie znacznie bardziej skomplikowane. Możesz zajrzeć do szczegółów uwierzytelniania opartego na systemie Windows. Jeśli serwer SQL jest do tego skonfigurowany, nie potrzebujesz nazwy użytkownika / pwd w ciągu połączenia, aby się z nim połączyć. Wszystko, co musisz zmienić, to nazwa serwera, a te same parametry połączenia będą działać z obiema maszynami, pod warunkiem, że oba mają oczywiście tę samą nazwę bazy danych.

dotNET
źródło
1
sa to konto administratora systemu SQL Server. Jeśli został zainstalowany z uwierzytelnianiem serwera sql lub uwierzytelnianiem w trybie mieszanym, musisz skonfigurować konto sa. Na przyszłość, oto przewodnik dotyczący konfigurowania konta sa, jeśli nie zostało ono zainstalowane z włączonym uwierzytelnianiem serwera sql.
iCodeSometime
4

Możemy po prostu połączyć się z bazą danych:

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

Na przykład:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);
Praneeth Gopinathan
źródło
-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

Spróbuj tego

VLB DE MEL
źródło