SQL Server 查詢伺服器主機上的檔案
1. 使用 xp_cmdshell
xp_cmdshell
xp_cmdshell
是 SQL Server 的一個擴充儲存過程,可以讓你執行作業系統命令(如 dir
)。預設是關閉的,需要先啟用。
啟用 xp_cmdshell
:
xp_cmdshell
:-- 允許進階選項
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
-- 啟用 xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
查詢本地資料夾檔案(例如查詢 D:\Test 資料夾):
EXEC xp_cmdshell 'dir D:\Test';
查出來的結果會顯示檔名、檔案大小、建立日期等資訊。
2. 使用 sys.xp_dirtree
sys.xp_dirtree
如果只需要檔案和目錄清單,可用 sys.xp_dirtree
:
EXEC master.sys.xp_dirtree 'D:\Test', 1, 1;
第一個參數是資料夾路徑。
第二個參數表示要遞迴查詢的層數(1 為只查一層)。
第三個參數 1 表示包含檔案(0 只查資料夾)。
3. 進階 — 將結果寫入暫存表
若你要處理、過濾結果,可用暫存表儲存查詢結果:
CREATE TABLE #Files (Output NVARCHAR(2000));
INSERT INTO #Files
EXEC xp_cmdshell 'dir D:\Test';
SELECT * FROM #Files WHERE Output LIKE '%.txt'; -- 只查詢 .txt 檔
DROP TABLE #Files;
4. 注意事項
必須有 SQL Server 的管理權限才可執行
xp_cmdshell
。xp_cmdshell
有資安風險,生產環境要特別注意權限控管。查詢的是「SQL Server 主機」的檔案,不是你的「用戶端電腦」。
Last updated