首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2005

SQL Server 2005 SQLCMD 工具完整使用指南(互動、腳本、變數、輸出導向)

     編輯:SQL Server 2005

一、 SQLCMD 簡介

sqlcmd.exe 是 SQL Server 2005 引入的命令列工具,取代 osql/isql,支援:

  • 互動式 T-SQL 執行
  • 批次腳本檔執行(-i)
  • 變數替換(-v / :setvar)
  • 輸出導向(-o / :out)
  • 伺服器清單列舉(:ServerList)

二、 常用啟動參數

三、 互動模式基本操作

C:\> sqlcmd -E
1> SELECT name FROM sys.databases;
2> GO
-- 執行批次
1> :ServerList
-- 列出網路上可見的 SQL Server
1> :Help
-- 顯示所有內建命令
1> QUIT
-- 離開

四、 執行腳本檔與輸出導向

-- 1. 直接執行腳本,結果輸出螢幕
sqlcmd -E -i deploy.sql

-- 2. 指定輸出檔
sqlcmd -E -i deploy.sql -o deploy.log

-- 3. 互動模式中導向
sqlcmd -E
1> :out results.txt
2> :r deploy.sql
3> GO

五、 腳本變數:外部傳入與內部設定

5.1 外部傳入(-v)

-- deploy.sql
SET NOCOUNT ON;
SELECT $(Cols) FROM $(TableName);

-- 命令列
sqlcmd -E -i deploy.sql -v Cols="name, object_id" TableName="sys.objects"

5.2 內部設定(:setvar)

-- backup_template.sql
USE master;
BACKUP DATABASE [$(db)] TO DISK = '$(file)';

-- backup_msdb.sql
:setvar db msdb
:setvar file C:\Backup\msdb.bak
:r backup_template.sql

5.3 列出目前變數

:Listvar

六、 核心內建命令速查

參數環境變數說明
-SSQLCMDSERVER伺服器/執行個體名稱
-U / -PSQLCMDUSER / SQLCMDPASSWORDSQL 驗證帳密
-E-信任連線(Windows 驗證)
-dSQLCMDDBNAME預設資料庫
-i-輸入腳本檔
-o-輸出檔案
-v-定義腳本變數 var=value
-hSQLCMDHEADERS標題列顯示間隔(列數)
-sSQLCMDCOLSEP欄位分隔字元
-wSQLCMDCOLWIDTH輸出欄寬
-b-遇錯誤時結束並回傳 ERRORLEVEL
-VSQLCMDERRORLEVEL嚴重性層級閾值

七、 實務應用場景

  • 自動化部署:CI/CD Pipeline 呼叫 sqlcmd -b -i release.sql -o release_$(date).log,失敗即中止並記錄。
  • 多環境參數化:同一腳本,透過 -v Env=Prod 切換資料庫名稱、檔案路徑。
  • 大量資料匯入:sqlcmd -E -i bulk_insert.sql -h -1 -s "," -w 65535 產生 CSV 格式輸出。
  • 健康檢查腳本:定期排程執行 health_check.sql,結果寄送郵件/寫入監控表。

八、 最佳實踐建議

  1. 腳本檔儲存為 **UTF-8 with BOM** 或 **Unicode**,避免中文亂碼。
  2. 啟用 -b 讓自動化流程能偵測失敗。
  3. 變數命名慣例:大寫 + 底線($(DB_NAME)),提升可讀性。
  4. 敏感資訊(密碼)勿寫在腳本,改用 -P 參數或環境變數傳入。
  5. 大量資料操作前先 SET NOCOUNT ON 減少網路封包。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
命令功能
:r <file>執行外部腳本檔
:ServerList列舉網路伺服器
:List列出目前緩衝區批次
:Listvar顯示所有變數
:Error <file>|STDERR|STDOUT錯誤輸出導向
:Out <file>|STDOUT|STDERR結果輸出導向
:Perftrace <file>|STDOUT|STDERR效能追蹤輸出
:Connect server[\instance] [timeout] [user [pwd]]切換連線
:On Error [exit|ignore]錯誤處理模式
:setvar <var> <value>設定腳本變數
:Help顯示說明
:XML [ON|OFF]切換 XML 輸出格式