前言
SSMS 與 Visual Studio 的「連線到伺服器」對話框皆可列出網路內可用的 SQL Server 實例。若需在腳本/程式中自動探索,可使用內建命令列工具 sqlcmd (SQL 2005+) 或舊版 osql (SQL 2000)。
指令用法
sqlcmd -L
osql -L
- -L (大寫):列出廣播封包可見的所有 SQL Server 實例。
- 輸出格式:
伺服器名稱\n實例名稱\n版本資訊\n...
實測畫面

osql vs sqlcmd 差異
| 項目 | osql (SQL 2000) | sqlcmd (SQL 2005+) |
輸出包含 (local) | 是 | 否 (直接顯示實際機器名) |
| Unicode 支援 | 弱 | 原生支援 (-u 輸出 Unicode) |
| 參數豐富度 | 基礎 | 完整 (變數、腳本、錯誤處理、格式化輸出) |
| 維護狀態 | 已淘汰 | 持續更新 |
(local) 為本機預設實例別名,sqlcmd 直接解析為實際電腦名,避免混淆。
應用場景
- 安裝腳本自動偵測目標實例。
- 健康檢查腳本巡檢叢集/可用性群組節點。
- CI/CD Pipeline 動態取得部署目標。
程式碼呼叫範例
// C# 呼叫 sqlcmd -L 並解析輸出
var psi = new ProcessStartInfo("sqlcmd", "-L") {
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
using (var proc = Process.Start(psi)) {
string output = proc.StandardOutput.ReadToEnd();
// 解析 output 取得實例清單
}
- 上一篇文章: SQL Server 2008 Management Studio 內建 T-SQL 偵錯與智慧提示完整指南
- 下一篇文章: SQL Server 2008 資料庫降級相容匯出至 SQL 2005 完整步驟
Copyright ©
程式碼之家 All Rights Reserved