我花了一整天的时间在网上搜索答案。显然 tsql 没有自己漂亮的写入文件命令。这是我的困境
我有一个正在创建的加载文件,其中单行的长度可以达到 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
在命令提示符下工作得很好
尽管取得了微小的进步,但我的经理并不想走那条路。因此,通过在 SQL 上执行此行启用 sp_configure 后,我选择了 sp_OACreate 和 sp_OAMethod: sp_configure 'Ole Automation Procedures', 1
这条路线的第一行是这样的:
EXECUTE @hr = sp_OACreate 'Scripting.FileSystemObject' , @objFileSystem OUT
@hr 给出一个 0 ,这很好,但 @objFileSystem 产生 16711422 并且 @hr 最终变成 -2146828218 我相信这是权限。
我真的很茫然找不到简单的事情,但我自己越来越难以找到具体的事情,只是在添加新行并重复该过程之前连续写入几个变量。
如果有人能熟练地帮助我找出 BCP 或 sp_OACreate,那么我将非常感激,因为网络几乎没有帮助(这是在我花了很多时间浏览微软自己的网站寻找答案之后)