Frage

Wie Servernamen durch den Code bekommen, wenn SQL Server (Standard Edition) installiert ist.

Wir geben den Servernamen, während eine Verbindungszeichenfolge Erstellen von SQL Server zu verbinden. Können wir diesen Wert durch den Code abrufen?

string sqlConnectionString = string.Format(
"user id={0};password={1};server={2};Trusted_Connection=no;database=TestDB;
connection timeout={3}",
dirDBinfo.UserName, dirDBinfo.Password, "ServerName", dirDBinfo.TimeOut);
War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob ich verstehe, was Sie wollen.

Wenn Sie bereits eine Verbindungszeichenfolge haben, und Sie versuchen, den Servernamen von ihm für den Einsatz an anderer Stelle zu extrahieren, können Sie es Reverse-Engineering wie folgt:

var parser = new SqlConnectionStringBuilder(connectionString);
var serverName = parser.DataSource;

Wenn Sie Ihre Verbindungszeichenfolge zum ersten Mal bauen, dann:

  1. Wenn Sie wissen, dass Sie auf der Maschine mit dem SQL-Server verbinden mögen, dass Ihr Client-Code auf ausgeführt wird, dann nur (local) für die Servernamen verwenden. Wenn der SQL Server eine Instanz Namen hat, dann geben Sie es wie folgt aus:. (local)\myinstancename
  2. Wenn Sie nicht im Voraus wissen, was Sie Server zu verbinden, dann ist es an Ihnen, von woanders her, dass die Informationen zu erhalten.

Andere Tipps

Sie können nicht nur ausführen SELECT @@ SERVER gegen diese Verbindung?

Ist der Server auf dem lokalen Computer?
Wenn ja, stellen Sie die Servernamen localhost.
Wenn nicht, Verwendung SqlDataSourceEnumerator .


Auch anstelle von einer Verbindungszeichenfolge String.Format bauen, sollten Sie eine SqlConnectionStringBuilder . Dies wird behandeln Wert mit Semikolons.

Zum Beispiel:

var builder = new SqlConnectionStringBuilder();

builder.UserID = dirDBinfo.UserName;
builder.Password = dirDBinfo.Password;
builder.Server= "localhost";
builder.UserID = dirDBinfo.UserName;
builder["Trusted_Connection"] = "no";
builder.Database = "TestDB"
builder.ConnectTimeout = dirDBinfo.TimeOut;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top