[英]programmatically list the instances of SQL Server
我有代碼來查找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),但不幸的是它找不到sql Express。
有人有主意嗎?
提前謝謝你
您需要為可瀏覽的SQL Server實例啟用SQL Browser服務。
SQL Express默認情況下未啟用此功能。
參考文獻:
SQL Server 2000內部提供了有關SqlDataSourceEnumerator的信息。 但是,SQL Server 2005通過使用名為SQL Browser的外部Windows服務來提供信息。 默認情況下啟用此服務,但是管理員可以關閉或禁用此服務,從而使服務器實例對該類不可見。 此服務僅適用於SQL Server 2005,對SQL Server 2000的行為沒有影響。
默認情況下,未為SQL Server Express啟用SQL Server瀏覽器服務。 可以先使用外圍應用配置器配置SQL Server Browser,然后使用SQL Server配置管理器進行管理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.