前言 在管理大型SQL Server資料庫時,SQLCMD是一個不可或缺的命令列工具。無論是執行日常維護工作、資料匯入匯出,還是建立自動化作業,SQLCMD都能幫助我們更有效率地完成這些任務。本文將詳細介紹SQLCMD的各種應用方式,幫助你掌握這個強大的工具。
SQLCMD 功能概觀
SQLCMD
資料匯入匯出
執行SQL指令
資料庫備份
自動化排程
SQLCMD基本語法 SQLCMD的基本語法結構如下:
1 2 3 4 5 6 7 8 sqlcmd - S < 伺服器名稱> - U < 使用者名稱> - P < 密碼> - d < 資料庫名稱> - i < 輸入檔案> - o < 輸出檔案> - r
主要應用場景 1. 資料匯入匯出 大型資料庫的匯入是SQLCMD最常見的應用之一。以下是一個完整的匯入範例:
1 2 3 4 5 sqlcmd - S 192.168 .0 .3 - U DBAdmin - P MyPassword - d TargetDB - r - i D:\backup.sql sqlcmd - S ServerName - U DBAdmin - P MyPassword - d SourceDB - Q "SELECT * FROM Users" - o "D:\export.txt"
2. 執行SQL指令檔 SQLCMD可以執行預先準備好的SQL指令檔:
1 2 3 4 5 sqlcmd - S ServerName - U DBAdmin - P MyPassword - i "D:\scripts\maintenance.sql" sqlcmd - S ServerName - U DBAdmin - P MyPassword - i "D:\script1.sql" - i "D:\script2.sql" - o "D:\log.txt"
3. 資料庫備份 透過SQLCMD進行資料庫備份:
1 2 3 4 5 sqlcmd - S ServerName - U DBAdmin - P MyPassword - Q "BACKUP DATABASE MyDB TO DISK='D:\Backups\MyDB.bak'" sqlcmd - S ServerName - U DBAdmin - P MyPassword - Q "BACKUP DATABASE MyDB TO DISK='D:\Backups\MyDB_Diff.bak' WITH DIFFERENTIAL"
4. 自動化作業排程 結合Windows排程器使用SQLCMD:
1 2 3 @echo offsqlcmd - S ServerName - U DBAdmin - P MyPassword - d MyDB - i "D:\DailyMaintenance.sql"
進階技巧 變數使用 SQLCMD支援使用變數,讓指令更具彈性:
1 2 sqlcmd - S $(Server) - U $(User ) - P $(Password) - v DB= "MyDatabase" - Q "SELECT * FROM $(DB).dbo.Users"
錯誤處理 加入錯誤處理機制:
1 2 3 4 5 6 7 8 9 10 11 :on error exit :setvar ErrorLevel 0 BEGIN TRY END TRYBEGIN CATCH SELECT ERROR_MESSAGE() AS ErrorMessage :setvar ErrorLevel 1 END CATCHGO
注意事項
密碼安全性:避免在指令中直接寫入密碼,建議使用環境變數或設定檔
效能考量:大型檔案匯入時,建議使用批次處理
錯誤記錄:務必加入適當的錯誤處理與記錄機制
權限控制:確保SQLCMD執行帳號擁有適當的權限
結論 SQLCMD是一個功能強大的命令列工具,透過本文的介紹,相信你已經對它的各種應用有了深入的了解。善用SQLCMD不只能提升工作效率,更能建立更穩定的資料庫維護機制。