2013-03-26 14 views
44

Ich entwickle eine einfache C# -Anwendung, ich würde gerne wissen: Wenn ich meine Anwendung mit SQL Server auf meinem PC verbinde, kenne ich die Verbindungszeichenfolge (Servername, Passwort usw.), aber wenn ich es anschließe zu einem anderen PC ist die SQL Server-Verbindungszeichenfolge anders. Gibt es in SQL Server ein gemeinsames Konto mit einem Standardkonto, das eine Verbindung herstellen kann? Ich habe über sa Konto in SQL Server gehört, was ist sa?Wie wird die SQL Server-Verbindungszeichenfolge festgelegt?

+4

Sie möchten nie einen Standardkontonutzername und ein Kennwort verwenden, um den Zugriff auf SQL Server oder einen anderen Verbindungstyp einzurichten. – jordanhill123

+2

'SA' bedeuten sql Server' sys_admin' Rolle – Elshan

+1

Können Sie Windows-Authentifizierung anstelle von SQL Server-Authentifizierung verwenden? Dies würde verhindern, dass Benutzer-IDs und Passwörter insgesamt verwendet werden müssen. –

Antwort

4

Sie müssen sich bei der Verbindung mit SQL Server auf einem anderen Computer einige Sorgen machen.

  • Host/IP-Adresse der Maschine
  • Initial Catalog (Datenbankname)
  • Valid Benutzername/Passwort

Sehr oft SQL-Server eine Standard intance ausgeführt werden kann was bedeutet, können Sie Geben Sie einfach den Hostnamen/die IP-Adresse an, aber Sie können auf ein Szenario stoßen, in dem es als benannte Instanz ausgeführt wird (zum Beispiel Sql Express). In diesem Szenario müssen Sie Hostname \ Instanzname angeben.

4

Sie müssen verstehen, dass ein Datenbankserver oder DBA nicht möchte, dass nur jemand den Inhalt des Servers verbinden oder ändern kann. Dies ist der ganze Zweck von Sicherheitskonten. Wenn ein einzelner Benutzername/pwd nur auf einer beliebigen Maschine funktionieren würde, würde dies keinen Schutz bieten. Das "sa" Ding, von dem Sie gehört haben, funktioniert nicht mit SQL Server 2005, 2008 oder 2012. Nicht sicher über frühere Versionen obwohl. Ich glaube, irgendwo in den frühen Tagen von SQL Server, der Standard-Benutzername und Pwd war sa/sa, aber das ist nicht mehr der Fall.

FYI, Datenbanksicherheit und Rollen sind jetzt viel komplizierter. Vielleicht möchten Sie sich die Details der Windows-basierten Authentifizierung ansehen. Wenn Ihr SQL Server dafür konfiguriert ist, benötigen Sie keinen Benutzernamen/Pwd in der Verbindungszeichenfolge, um sich mit ihm zu verbinden. Alles, was Sie ändern müssen, ist der Name des Server-Rechners, und die gleiche Verbindungszeichenfolge funktioniert mit beiden Rechnern, vorausgesetzt beide haben den gleichen DB-Namen.

+0

sa ist das Sysadmin-Konto für SQL Server. Wenn es mit der SQL Server-Authentifizierung oder der Authentifizierung im gemischten Modus installiert wurde, müssen Sie ein sa-Konto einrichten. Für zukünftige Referenz, [hier ist ein Leitfaden] (https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/change-server-authentication-mode) zum Einrichten der Ein Konto, wenn es nicht mit aktivierter SQL Server-Authentifizierung installiert wurde. – kennycoc

3

Sie können entweder die Windows-Authentifizierung verwenden, wenn sich Ihr Server in der Domäne befindet, oder die Sql-Authentifizierung. Sa - ist ein Systemadministrator, das root-Konto für SQL-Server-Authentifizierung. Aber es ist eine schlechte Praxis, wenn Sie für die Verbindung Ihrer Kunden verwenden. Sie sollten Ihre eigenen Konten erstellen und sie verwenden, um eine Verbindung zu Ihrem SQL herzustellen. In jeder Verbindung setzen Sie Konto Login, sein Passwort und die Standarddatenbank, die Sie verbinden möchten.

80

// .NET Data Provider - Standard-Verbindung mit Benutzername und Passwort

using System.Data.SqlClient; 

SqlConnection conn = new SqlConnection(); 
conn.ConnectionString = 
"Data Source=ServerName;" + 
"Initial Catalog=DataBaseName;" + 
"User id=UserName;" + 
"Password=Secret;"; 
conn.Open(); 

// DataProvider- .NET - Verbindung Trusted

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

Wie kann ich dieses Format verwenden, aber einen Domänenbenutzer verwenden? Ich bekomme immer eine rote Unterstreichung, wenn ich 'user id = Domain \ Uname' benutze. Ich denke, dass es etwas mit ungültigen Escape-Zeichen zu tun hat, wie soll ich das genau machen? –

+0

@Wairimu Murigi Sie müssen den Backslash entkommen, d. H. Benutzer-ID = Domain \\ Uname –

12

Eine sehr gute Ressource ConnectionString.com ist, wo Sie finde nicht nur SQL Server-Verbindungszeichenfolgen, sondern eine Vielzahl anderer db-Verbindungszeichenfolgen.

+0

Warum unterscheiden sie sich so viel von MS-Dokumentation? https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx – Todd

+0

Diese Seite ist down. – Ska

+0

https://www.connectionstrings.com/ (Mehrzahl) –

5

.NET Data Provider - Standard Relative Path - Standardverbindung

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

.NET Data Provider - Standard Relative Path - Vertrauenswürdige Verbindung

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 - Benutzerdefinierte Relative Path - Standardverbindung

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 - Benutzerdefinierte Relative Path - Vertrauenswürdige Verbindung

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

sa ist ein Systemadministratorkonto, das standardmäßig mit sql server geliefert wird. Wie Sie vielleicht bereits wissen, können Sie zwei Möglichkeiten verwenden, um sich bei SQL Server anzumelden.

screen shot of SQL Server Management Studio

Deshalb gibt es Verbindungszeichenfolgen, die für jedes Szenario geeignet (wie beispielsweise die Windows-Authentifizierung, LocalDB etc.). Verwenden Sie https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver, um Ihre Verbindungszeichenfolge zu erstellen. Dies sind XML-Tags. Sie benötigen nur einen Wert von connectionString