Kann mir jemand sagen, wie man remote Sqlserver Instanzen mit C# und SMO oder einem API?Wie bekomme ich die Liste der SqlInstances einer bestimmten Maschine?
Ich habe einen Remote-Server-Namen "RemoteMC", die zwei Instanzen von SQL Server hat: "RemoteMc" und "RemoteMC \ sqlexpress"
Ich versuche, die Instanzen in Code wie folgt zu erhalten:
Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);
Aber es gibt "Host \ sqlexpress"
Ich weiß nicht, was schief gelaufen ist. Wie kann ich das Ergebnis zurück wie:
RemoteMC
RemoteMC \ sqlexpress;
?
mit, dass ich lokale SQL-Entdeckung sei immer only.How i für die Fern sqlDiscovery.means gehen kann ich die Anwendung ausgeführt werden kann, dann sollte es für bestimmte Maschine gehen und rufe die Informationen zu meinem lokalen machine.If i EnumAvailableSqlServers verwenden (true) es gibt nur lokale, wenn ich string übergeben, die benannte Instanzen von remote kommen nur, wenn eine andere 2 mehr existiert o remote ich werde sie nicht bekommen. – Cute
Hmmm ... du hast Recht. Ich habe 2 Instanzen auf meiner Maschine, eine SQL 2000-Instanz namens "MYMACHINE" und eine SQL 2005-Instanz namens "MYMACHINE \ MYSQL2005". Wenn ich "MYMACHINE" passiere, bekomme ich nur diese eine Instanz. Ich denke, das Problem ist, dass Sie entweder einen Servernamen ODER einen Instanznamen übergeben können - und in diesem Fall ist der Servername zufällig auch ein Instanzname, und EnumAvailableServers tut, was er normalerweise für einen Instanznamen tut, dh um zurückzukehren Info nur über diese Instanz. Yuk. –
Als Alternative können Sie die Überladung verwenden, die einen booleschen Parameter verwendet, und false übergeben (dh NICHT nur lokale Instanzen). Dadurch erhalten Sie eine große Tabelle mit allen lokal zugänglichen Instanzen, und Sie können die Spalte Server filtern.Es ist nicht ideal, da es vermutlich länger dauert, die Liste zu erstellen. Aber es wird funktionieren. –