我花了整整一天在网上搜索答案。显然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