SQL Server代理作业的sqlcmd xml输出截断XML

时间:2014-12-04 17:33:31

标签: sql sql-server xml powershell sqlcmd

我有一个SQL Server代理作业(将设置为按计划运行)以每天检索数据。

自动化工作涉及的两个步骤如下:

第1步。 使用T-SQL执行以下查询

  

设置NOCOUNT ON;
  声明@xml xml
  设置@xml =(从tableName中选择一个AS a,b AS b作为xml路径('path'),ROOT('paths'))   选择@xml作为returnXml

步骤2.在Powershell中使用以下命令删除前4行,以便删除任何标题

  

(Get-Content“C:\ cmd \ xml.xml”|其中{$ _.ReadCount -gt 4})| Set-Content“C:\ cmd \ xml.xml”

现在,当我查看输出文件时,我收到此消息:
字符串数据,右截断[SQLSTATE 01004]

我可以看到,在文件的末尾,它只是关闭了一些xml,它甚至没有使用正确的结束标记。

关于我如何克服这一点的任何想法?另外,以适当的XML格式出来将是甜蜜的,而不仅仅是一个longgg块

我在使用sqlcmd时已经读过使用:XML ON但是我没有运气:(

1 个答案:

答案 0 :(得分:0)

我运行了类似于您的设置的测试。我注意到XML被截断为64,514个字符。这非常接近2 ^ 16 = 65,536的幻数。我猜你在某个地方遇到了数据上限。您可以尝试将查询限制为TOP 50000左右,并批量执行。