擴充預存程序 (xp_*) 提供作業系統層面能力,是 DBA 自動化維運的利器。精選 12 大高頻指令:
| 功能 | 指令 | 關鍵參數/範例 |
|---|---|---|
| 取得版本 | EXEC master..sp_msgetversion | — |
| 列出目錄樹 | EXEC master..xp_dirtree 'path', depth, show_files | xp_dirtree 'c:', 1, 1 (深度1、顯示檔案) |
| 列出 OLE DB 提供者 | EXEC master..xp_enum_oledb_providers | — |
| 列出代碼頁 | EXEC master..xp_enumcodepages | — |
| 列出 DSN | EXEC master..xp_enumdsn | — |
| 列出錯誤日誌 | EXEC master..xp_enumerrorlogs | — |
| 列出 Windows 本地群組 | EXEC master..xp_enumgroups | — |
| 檢測檔案存在 | EXEC master..xp_fileexist 'path', @flag OUTPUT | @flag=1 存在 |
| 列出固定磁碟可用空間 | EXEC master..xp_fixeddrives | 回傳 MB 可用空間 |
| 取得伺服器網路名稱 | EXEC master..xp_getnetname | — |
| 讀取錯誤日誌內容 | EXEC master..xp_readerrorlog | — |
| 列出子目錄 | EXEC master..xp_subdirs 'path' | — |
| 列出可用媒體 | EXEC master..xp_availablemedia | 回傳磁碟機、空間、類型(軟碟/硬碟/CD-ROM) |
DECLARE @flag INT
EXEC master..xp_fileexist 'c:\abc.bak', @flag OUTPUT
IF @flag = 1 PRINT 'exist' ELSE PRINT 'no exist'
name low free high free media type
C:\ 1270386688 0 2 -- 硬碟
D:\ 1726824448 2 2
E:\ 875053056 10 2
F:\ 0 0 8 -- CD-ROM
sp_addlogin 內含加密函數 pwdencrypt有興趣可自行測試密碼雜湊邏輯。
善用 xp_* 系列可構建:自動化備份驗證、磁碟空間監控、檔案存在觸發作業、錯誤日誌輪轉、異構資料來源探索等維運自動化體系。注意:xp_cmdshell 預設停用,高風險,謹慎啟用。