需求:將查詢結果匯出為 CSV/文字檔。工具:xp_cmdshell 呼叫 BCP (大量複製程式)。
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
右鍵伺服器 → 屬性 → 進階 → 啟用 xp_cmdshell 勾選。
EXEC xp_cmdshell 'bcp "SELECT * FROM sysfiles" queryout "C:\bcptest.txt" -T -c -t,';
參數解析:
queryout:指定查詢輸出模式。"C:\bcptest.txt":輸出檔案路徑。-T:信任連線 (Windows 驗證);或 -U user -P pwd。-c:字元資料類型 (預設 tab 分隔)。-t,:欄位分隔符號設為逗號 (CSV)。EXEC xp_cmdshell 'bcp "SELECT name, type_desc, create_date FROM sys.objects"
queryout "C:\bcptest2.txt" -T -S SERVERNAME\INSTANCE -c -t,';
SELECT * FROM vw_ExportData。bcp.exe,避免 xp_cmdshell 安全風險。OFFSET/FETCH 分頁查詢,多次 BCP 追加 (>>) 至同一檔案。xp_cmdshell 允許執行任意 OS 命令,生產環境建議關閉,改用 SQL Agent / SSIS / PowerShell / CLR 預存程序匯出。sysadmin 角色使用,並稽核執行日誌。INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;Database=C:\;HDR=YES', 'SELECT * FROM Export.txt') SELECT * FROM Table。掌握 BCP 基礎用法可快速完成臨時匯出需求,長期專案請採用 SSIS 等企業級 ETL 工具。