using System.Data.SqlClient;
DataTable instances = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
// 欄位:ServerName, InstanceName, IsClustered, Version
foreach (DataRow row in instances.Rows)
{
// 過濾本機實例
if (row["ServerName"].ToString().Equals(Environment.MachineName, StringComparison.OrdinalIgnoreCase))
Response.Write("<li>" + row["InstanceName"]);
}
需參考 Microsoft.SqlServer.Smo.dll、Microsoft.SqlServer.ConnectionInfo.dll 等組件(隨 SQL Server 安裝或 NuGet 安裝 Microsoft.SqlServer.SqlManagementObjects)。
using Microsoft.SqlServer.Management.Smo;
DataTable smoInstances = SmoApplication.EnumAvailableSqlServers(true); // true = 只列本機
GridView2.DataSource = smoInstances;
GridView2.DataBind();
| 特性 | SqlClient 列舉器 | SMO |
|---|---|---|
| 相依性 | 僅 .NET Framework 內建 | 需額外安裝 SMO 組件 |
| 資訊豐富度 | 基本(名稱、版本、叢集) | 完整(版本、版本編號、叢集、可用性群組等) |
| 適用場景 | 輕量級安裝檢測、連線對話方塊 | 管理工具、完整實例發現 |