0

SQLServerのリストを見つけるためのコードがあります

 public static string[] GetSQLServerList()
        {
            SqlDataSourceEnumerator dse = SqlDataSourceEnumerator.Instance;
            DataTable dt = dse.GetDataSources();
            if (dt.Rows.Count == 0)
            {
                return null;
            }

            string[] SQLServers = new string[dt.Rows.Count];
            int f = -1;
            foreach (DataRow r in dt.Rows)
            {
                string SQLServer = r["ServerName"].ToString();
                string Instance = r["InstanceName"].ToString();
                if (Instance != null && !string.IsNullOrEmpty(Instance))
                {
                    SQLServer += "\\" + Instance;
                }
                SQLServers[System.Math.Max(System.Threading.Interlocked.Increment(ref f), f - 1)] = SQLServer;
            }
            Array.Sort(SQLServers);
            return SQLServers;
        }

正常に動作しますが(SQL Serverが見つかった場合)、残念ながらsqlExpressが見つかりません。

誰かアイデアがありますか?

よろしくお願いします

4

1 に答える 1

7

SQLサーバーインスタンスのSQLブラウザサービスを参照できるようにする必要があります。

SQL Expressでは、これはデフォルトで有効になっていません。

参照:

SQL Server(ADO.NET)のインスタンスの列挙

SQL Server 2000は、内部でSqlDataSourceEnumeratorの情報を提供します。ただし、SQL Server 2005は、SQLブラウザという名前の外部Windowsサービスを使用して情報を提供します。このサービスはデフォルトで有効になっていますが、管理者はこのサービスをオフまたは無効にして、サーバーインスタンスをこのクラスから見えなくすることができます。このサービスはSQLServer2005にのみ適用され、SQLServer2000の動作には影響しません。

SQLServerブラウザの使用

既定では、SQLServerBrowserサービスはSQLServerExpressに対して有効になっていません。SQL Serverブラウザーは、Surface Area Configuration Toolを使用して最初に構成し、SQL ServerConfigurationManagerを使用して管理できます。

于 2012-05-24T08:46:54.493 に答える