1

在 SQL Server 2008 中,我想使用sqlcmd实用程序将存储过程的结果导出到文件中。现在我的存储过程的结尾是一个 select 语句,最后有一个“for xml path..”子句。

我在BOL上读到,如果我不想在文件大小达到 1MB 时截断输出,我必须使用这个:XML ON命令,但在调用存储过程之前,它应该放在自己的行上。

  • 你们中的任何一位专家都知道是否可以在不为 sqlcmd 指定输入文件的情况下做到这一点?(我这样调用 sqlcmd :

exec master..xp_cmdshell 'sqlcmd -Q"exec storedProcedureName @param1=value1, @param2=value2" -o c:\exportResults.xml -h-1 -E',

但是“storedProcedureName”及其参数可以更改,这意味着每个传递参数到 sqlcmd 有 1 个输入文件)

  • 另外,我似乎不能使用 bcp 而不是 sqlcmd 因为我的存储过程正在创建一个临时表并在其上执行 DML 语句?

非常感谢

4

2 回答 2

0

我回答我的问题(使用 powershell):

http://ask.sqlservercentral.com/questions/5322/is-it-possible-to-use-the-xml-on-option-without-using-an-input-file/5380#5380

于 2010-03-30T12:07:44.153 回答
0

如果你可以使用powershell作为你的执行shell,那么你也可以:XML ON-Q参数中使用,只需编码结束行字符\\n(`n in powershell)

sqlcmd -Q":XML ON\`n exec storedProcedureName @param1=value1, @param2=value2" -o c:\exportResults.xml -h-1 -E
于 2018-04-26T10:35:38.163 回答