次のコードで私が何をしているのか、誰かが説明してくれますか?
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);
Server sr = new Server("Test");
foreach(DataBase db in sr.DataBases)
{
Console.WriteLine(db["name"]);
}
sr.Databases
接続できないという例外があります。
次のコードで私が何をしているのか、誰かが説明してくれますか?
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);
Server sr = new Server("Test");
foreach(DataBase db in sr.DataBases)
{
Console.WriteLine(db["name"]);
}
sr.Databases
接続できないという例外があります。
次のリンクを参照してください。
または、コードを次のように変更することもできます。
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(dr["Name"]);
}
}
これで問題が解決することを願っています。
インスタンス名Testの SQL Server はありますか? そうでない場合、それはあなたの問題です。
すべてのローカル SQL Server インスタンスを列挙しようとしているようです。もしそうなら、このコードは動作します:
DataTable dt = SmoApplication.EnumAvailableSqlServers(true);
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(dr["Name"]);
Console.WriteLine(" " + dr["Server"]);
Console.WriteLine(" " + dr["Instance"]);
Console.WriteLine(" " + dr["Version"]);
Console.WriteLine(" " + dr["IsLocal"]);
}
using Microsoft.Win32;
RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
String[] instances = (String[])rk.GetValue("InstalledInstances");
if (instances.Length > 0)
{
foreach (String element in instances)
{
Console.WriteLine(element); // element is your server name
}
}