如何使用for xml路径查询结果阻止sqlcmd截断

J3F*_*FFK 7 xml t-sql batch-file sql-server-2008 for-xml-path

在读完一个答案第二个答案以及sqlcmd上infopage之后,我仍然无法让以下工作.

我试图使用批处理文件中的sqlcmd将结果查询到xml文件中.

批处理文件如下所示:

sqlcmd -R -d DBName -i "c:\inputquery.sql" -h-1 -y 0 -o "c:\outputfile.xml"
Run Code Online (Sandbox Code Playgroud)

简化的SQL查询是:

:XML ON
SELECT '<?xml version="1.0" encoding="UTF-8"?>' +
CAST((
SELECT Columns FROM Table
FOR XML PATH ('Product'), ROOT('Products')
) 
AS NVARCHAR(MAX))
Run Code Online (Sandbox Code Playgroud)

输出是一个大约1025Kb的xml文件,一个截断的字符串.我认为它截断到1mb,但你怎么能阻止这个呢?目标是将完整的查询结果放入xml文件中.据我所知,所有选项都已使用.顺便使用TSQL SSMS2008.

小智 6

我今天遇到了同样的问题,我使用了-y0选项.我的输出现在看起来正确.以为我会发布我的发现,所以它可能会帮助其他人遇到同样的事情.

sqlcmd -Sxxxxxxx -E -dmaster -h-1 -y0 -Q" my query that produces long results in here;" > "D\:out.txt"
Run Code Online (Sandbox Code Playgroud)

-h-1 也删除列标题.

  • 当我尝试使用 `-h-1` 和 `-y0` 时,我收到以下错误消息:`Sqlcmd:-h 和 -y 0 选项是互斥的。`。尽管看起来即使没有`-h-1`,标题也被排除在外。 (3认同)