你需要做的第一件事是確定xp_cmdshell是可用的。你可以選擇下面兩種方法中的一種來實現。
1.你可以使用sp_configure並執行下面的腳本。
EXEC master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE EXEC master.dbo.sp_configure 'xp_cmdshell', 1 RECONFIGURE
2.你可以使用Surface Area Configuration工具。
選擇功能中的Surface Area Configuration並檢查Enable xp_cmdshell檢驗欄。
圖一
現在既然你已經使xp_cmdshell可用,那麼你可以准備輸出你的文件。
下面是一個示例命令,它將把系統文件表的結果輸出到以逗號分割的文件bcptest.txt中。只需復制並把它粘貼到一個查詢窗口中且執行這個查詢。
EXEC xp_cmdshell 'bcp "SELECT * FROM sysfiles" queryout "C:bcptest.txt" -T -c -t,'
注:BCP是一個命令行實用工具,xp_cmdshell要求只能在一個SQL批處理內使用。
當在"master"數據庫中執行上面的命令時將得到這個輸出結果。
圖二
使用的參數是:
l Queryout選項允許你指定一個查詢來輸出。這可以像我們使用的查詢那樣簡單也可以像你需要的那樣復雜。你也可以創建一個視圖並從視圖中選擇數據。
l file name是存儲結果的,它位於queryout選項之後。
l -T參數指定bcp實用工具通過集成安全使用一個可信連接來連接到SQL Server。如果你想使用一個SQL Server登陸,那麼你可以使用-P(密碼)和-U(用戶)。
l -c指定將用於各個字段的字符數據類型。
l -t參數允許你指定一個字段定界符。在-t之後的字符將用於隔開數據字段。如果-t被刪除了,那麼tab將用於默認定界符。
另一個你可能需要使用的參數是-S,你可以用它來指定服務器名稱。如果你有一個指定的實例,那麼你需要使用這個參數。下面是一個連接到服務器"DEVELOP" 和實例 "DEV1"的例子。
EXEC xp_cmdshell 'bcp "select name, type_desc, create_date from sys.objects" queryout "C:bcptest2.txt" -T -SDEVELOPDEV1 -c -t,'EXEC xp_cmdshell 'bcp "select name, type_desc, create_date from sys.objects" queryout "C:bcptest2.txt" -T -SDEVELOPDEV1 -c -t,'
你也必須知道使用參數-t和-T的實例是不一樣的,所以要保證你在實例中使用正確的參數。