我正在尝试使用 SQLCMD 自动化在数据库中运行存储过程的过程。SQL Server Management Studio 2008 安装在 Windows Server 上,这一切都试图在其中发生。SQLCMD 将通过批处理脚本被调用,并被告知执行存储过程并将输出保存到 XML 文件中。我无法显示存储过程,因为它包含敏感材料,但它包含 FOR XML PATH('') 的用法。
我从各种网站阅读了几篇文章,人们说要使用 :XML ON 来获取实际 XML 格式而不是表格格式的输出,以及“-h-1 -y 0”的开关以确保输出不会被截断。我正在尝试通过批处理脚本运行 SQLCMD,以便它可以全部自动化。
我当前的批处理脚本(变量都定义在脚本的这一行之前):
sqlcmd -X -Q -h-1 -y 0 "EXEC %TransactionName%" -d %Database% -S %ServerInstance% -o "%OutFilename%_%currDATE%.xml"
我尝试在事务中添加 :XML ON 并创建一个单独的 SQL 脚本,内容如下:
Run_Transact.sql
:XML ON
EXEC storedProcedure
因此批处理文件将读取:
sqlcmd -X -Q -h-1 -y 0 -i runTransact.sql -d %Database% -S %ServerInstance% -o "%OutFilename%_%currDATE%.xml"
我得到了错误:
HResult 0x80004005,级别 16,状态 1 未提供说明
如果我不使用 :XML ON 那么我得到的输出看起来像是表格格式,它包括一个标题以及只有第一条记录,但不是全部(它被截断)。
我的问题是如何让 XML 文件中的输出看起来像 XML 并且不会被截断?
提前非常感谢!