5

次のコードで私が何をしているのか、誰かが説明してくれますか?

DataTable dt=SmoApplication.EnumAvailableSqlServer(true);
Server sr = new Server("Test");

foreach(DataBase db in sr.DataBases)
{
    Console.WriteLine(db["name"]);
}

sr.Databases接続できないという例外があります。

4

4 に答える 4

10

次のリンクを参照してください。

または、コードを次のように変更することもできます。

DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
if (dt.Rows.Count > 0)
{
    foreach (DataRow dr in dt.Rows)
    {
        Console.WriteLine(dr["Name"]);
    }
}

これで問題が解決することを願っています。

于 2009-07-15T10:32:54.130 に答える
6

インスタンス名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"]);
}
于 2009-07-15T10:34:05.860 に答える
1
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                
            }
        }
于 2011-05-11T12:48:24.533 に答える