我花了整整一天在網上搜索答案。顯然tsql沒有自己的漂亮的寫入文件命令。這裏是我的困境T-SQL寫入文件txt或csv
我有我創建在一個單一的線其長度可達10K +負載文件。在SQL Server varchar(MAX)的限制是8000(所以我相信),所以我把這些行分成幾個變量。我試圖做PRINT,但窗口窗格允許4000.解決方法是每次打印一個變量的虛線,但這對於手動勞動可能會很乏味,所以我選擇將它寫入一個txt文件中的一個變量時間。
我通過xpcommandshell看着BCP,它看起來很有希望。問題是,我能得到這條線的命令提示符下工作,然而這完全一樣的線不上TSQL查詢工作:
declare @cmd varchar(8000)
select @cmd = 'bcp Client_DB "Select name from dbo.t_TagBuild_set" queryout "Desktop\LAMB\dummy.txt" -c -t, -T'
exec master..xp_cmdshell @cmd
bcp Client_DB "Select name from dbo.t_TagBuild_set" queryout "Desktop\LAMB\dummy.txt" -c -t, -T
作品在命令提示符下
完全正常的,儘管這種輕微的進展,我的經理不想走那條路。所以不是我選擇了由sp_OACreate和sp_OAMethod將向通過執行上的SQL該行實現的sp_configure後: sp_configure的「OLE自動化過程」,1
一個這條路線在第一個行是這樣的:
EXECUTE @hr = sp_OACreate 'Scripting.FileSystemObject' , @objFileSystem OUT
@hr給出了0,所以這很好,但@objFileSystem得出16711422,@hr最終成爲-2146828218,我相信這是權限。
我真的很難找到簡單的事情,但我已經越來越難以找到具體的東西,只需在添加一個新行並重復該過程之前寫入一對變量。
如果任何人都可以熟練地幫我找出BCP由sp_OACreate或然後我會因網非常感激的是幾乎沒有幫助(這是後我花了很多時間通過微軟尋找自己的網站一個答案)
'VARCHAR(最大)'是 「無限制」。'varchar(n)'限於n <= 8000。 – 2013-02-14 22:51:35
*我的經理不想走這條路。*你的經理有什麼問題? SSIS能做你需要的東西嗎?或者你的經理尼克斯能做到這一點嗎?還有爲什麼要使用FSO搞亂?如果你打算這麼做,你可以寫一個[CLR程序集](http://msdn.microsoft.com/en-us/library/ms254956%28v=VS.80%29.aspx) – 2013-02-14 22:57:57
Technically varchar(最大)有一個2GB的限制 – 2013-02-14 23:03:59