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 sa
koncie w SQL Server, co to jest sa
?
c#
sql-server
connection-string
sa
Roshan
źródło
źródło
SA
średniasys_admin
rola serwera sqlOdpowiedzi:
.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 .
źródło
user id=Domain\Uname
i myślę, że ma to coś wspólnego z nieprawidłowymi znakami ucieczki, jak mam to zrobić poprawnie?;
postaćWłaściwie możesz użyć tej
SqlConnectionStringBuilder
klasy do zbudowania parametrów połączenia . Aby zbudować parametry połączenia , musisz utworzyć wystąpienie obiektu z tegoSqlConnectionStringBuilder
i 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 zConnectionString
właściwości zSqlConnectionStringBuilder
obiektu, jak pokazano w tym przykładzie:Możesz użyć
new
operatora, aby zrobić to bezpośrednio.Możesz dodać więcej parametrów, aby zbudować parametry połączenia . Pamiętaj, że parametry są definiowane przez wartości ustawione we
SqlConnectionStringBuilder
wł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
SqlConnectionStringBuilder
klasy 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.
Możesz zalogować się ze sa użytkownika w oknie logowania na początku SQL Server menedżera bazy danych. Jak na tym obrazku:
źródło
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();
źródło
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";
źródło
Jest wiele rzeczy, o które należy się martwić podczas łączenia się z programem SQL Server na innym komputerze.
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.
źródło
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ć.
źródło
sa
to 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.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
źródło
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.
źródło
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);
źródło
"ConnectionString":{ "Database_Name": "server=.;database=Database_Name;Integrated Security=true;" },
Spróbuj tego
źródło