Laden...

suche nach sql servern

Erstellt von gelöschtem Konto vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.219 Views
Gelöschter Account
vor 17 Jahren
suche nach sql servern
  1. wie kann ich herausfinden ob im netzwerk ms-sql-server zur verfügung stehen und wie die benannt sind(für den connectionstring)?

  2. wie kann ich die verfügbaren datenbanken auf diesem server herausfinden?

3.825 Beiträge seit 2006
vor 17 Jahren
  1. Wurde schon öfter behandelt :

DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources();
foreach(DataRow sv in servers.Rows)
{
    lviServerliste.Items.Add(sv[0].ToString());
}

Leider wird die Instance nicht mit angezeigt, entgegen der Doku.

  1. weiss ich noch nicht, das suche ich auch noch.

In codeproject gibt es eine Serverliste auf Protokollebene, die auch die Instanzen anzeigt.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Gelöschter Account
vor 17 Jahren

zu 1.
geht ja bei weitem einfacher als ich dachte.

zu 2.
gibt es da nicht ein sql statement der die datenbanken zurückgibt?

K
174 Beiträge seit 2006
vor 17 Jahren

Hi,

zu 2.:

Du müsstes zu jedem server eine SqlConnection aufbauen.
Und dann einfach:


DataTable dtDBs = sqlConn.GetSchema("Databases");

Hab jetzt nicht die Struktur der erhaltenen DataTable im Kopf, aber dort stehen auf alle fälle die Datenbanken des gerade verbundenen Servers drin.

Grüße,
Kani

Gelöschter Account
vor 17 Jahren

vielen lieben dank

@struktur der tabelle:
ich werds einfach debuggen und im tabellenexplorer anschauen

ihr habt mir sehr geholfen thx

Gelöschter Account
vor 17 Jahren
DataTable dtDBs = sqlConn.GetSchema("Databases");

bei dem hats mir immer ein "invalid operatioon" raus.. warum??

edit: hat sich erledigt mit dem fehler aber:
ich bekomm nur metadaten und nicht die namen der verfügbaren datenbanken um sie dann in ein connectionstring zu packen um anschließend damit arbeiten zu können

K
174 Beiträge seit 2006
vor 17 Jahren

verstehe ich jetzt nicht... datenbanknamen sind doch metadaten...
also ich bekomme sie so heraus:


DataTable dtDatabases = sqlConn.GetSchema("Databases");
for(int i=0; i<dtDatabases.Rows.Count; i++)
{
    Console.WriteLine(dtDatabases.Rows[i]["database_name"]);
}

Grüße,
Kani

Gelöschter Account
vor 17 Jahren

also ich hab mir die tabelle im debugger angeschaut und nichts dergleichen dort gefunden aber ich werd mal den schnippsel morgen testen

3.825 Beiträge seit 2006
vor 17 Jahren

Und hat jetzt jemand ne Lösung wie man die Instanzen sehen kann ?

Ich seh nur "Workstation1" statt "Workstation1\SQLEXPRESS". Die Instanz brauche ich ja auch um den Connectionstring zusammenzubauen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

T
433 Beiträge seit 2006
vor 17 Jahren

Hi Bernd,

in der MSDN bin ich über ein Artikel gestolpert der sich um das Auflisten von SQL Server im Netzwerk beschäftigt.
Dort steht auch das unter Umständen der Instanzname nicht aufgelistet wird.

Vielleicht hilft dir der Artikel ja weiter.

Gruß,
Tom

Gelöschter Account
vor 17 Jahren
DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources();

                foreach (DataRow sv in servers.Rows)
                {
                    this.dropdown.Items.Add(sv[0].ToString() + "\\" + sv[1].ToString());
                }

dieser string der da rauskommt ist komplett so wie er ist als "data source" zu verwenden beim connectionstring

T
433 Beiträge seit 2006
vor 17 Jahren

Das Problem ist aber das du unter Umständen den Instanznamen vom SqlDataSourceEnumerator gar nicht bekommen wirst, wie in meinem link beschrieben.

[Edit]
So ich hab jetzt noch einmal bisschen gesucht. Am besten ihr verwendet SQLDMO wie z.B. in diesem Artikel schön beschrieben.

Gruß,
Tom

Gelöschter Account
vor 17 Jahren

danke tom