将数据提取到For XML Path的SQL作业在我的机器上运行正常,但在客户服务器

时间:2018-06-04 20:53:56

标签: sql-server sql-server-2014 sqlcmd for-xml-path sql-job

我正在为客户开发一个项目,我已经创建了一个SQL视图和一个SQL作业,以便从第三方供应商的数据库中提取数据。数据将作为XML文档导出。第三方供应商要求XML文件不包含任何纯文本。

在测试中,我已经在我的本地机器上进行了设置,它运行正常。

在客户服务器上,我可以查询视图并返回数据。我可以运行一个sql语句来查询视图,并以所需的XML格式返回数据。但是,当SQL作业运行时,结果数据将显示在不可用的字符串中。

SQL作业以(CmdExex)运行,SQL作业的文本为:

sqlcmd.exe -S <servername> -U <login name> -P <password> -d <databasename> 
-i <sql query /input location> -o <file output location and name>.xml 
-y 8000 -h -1

作业运行并通过调用此语句来查询sql视图:

SET NOCOUNT ON
SELECT * FROM dbo.<ViewName>
FOR XML PATH ('INCIDENT');

结果应如下所示:

<INCIDENT>
    <YearOf>18</YearOf>
    <IncdNo>xxx</Incdno> 

他们在我的本地机器上运行这项工作。

但是,在客户站点上,结果如下所示:(截断空格)

0x7575087590075E0075300759007575007550075E0057500757506590065006100720075F006600757506759006E0063006750075E006F0075750C7530061006C006C0057500790070006500753006F0067500650075750C7530061006C006C005750079007000

1 个答案:

答案 0 :(得分:0)

通过编辑此行解决了

FOR XML PATH(&#39; INCIDENT&#39;);

添加,最后是TYPE,如此

FOR XML PATH(&#39; INCIDENT&#39;),TYPE;