XML保存/导出 - SQL Server - 复制方向必须是' in',' out'或'格式'

时间:2016-12-24 08:52:41

标签: sql-server xml sql-server-2014 export-to-xml

我正在尝试导出从sql查询生成的xml。我正在尝试这样

 EXEC master.dbo.sp_configure 'show advanced options', 1
 RECONFIGURE
 EXEC master.dbo.sp_configure 'xp_cmdshell', 1
 RECONFIGURE 
 EXEC xp_cmdshell 'bcp "SELECT @xml" -S <SERVERNAME> -D <DATABASE_NAME> -U <UserName> -P <PASSWORD> queryout "E:\test.xml" -T -c -t,'

尝试这个时,我得到了下面列出的结果

 Copy direction must be either 'in', 'out' or 'format'.
 usage: bcp {dbtable | query} {in | out | queryout | format} datafile
 [-m maxerrors]            [-f formatfile]          [-e errfile]
 [-F firstrow]             [-L lastrow]             [-b batchsize]
 [-n native type]          [-c character type]      [-w wide character type]
 [-N keep non-text native] [-V file format version] [-q quoted identifier]
 [-C code page specifier]  [-t field terminator]    [-r row terminator]
 [-i inputfile]            [-o outfile]             [-a packetsize]
 [-S server name]          [-U username]            [-P password]
 [-T trusted connection]   [-v version]             [-R regional enable]
 [-k keep null values]     [-E keep identity values]
 [-h "load hints"]         [-x generate xml format file]
 [-d database name]        [-K application intent]

我无法找出问题所在。

我的问题是 -

  1. 我做错了什么?

  2. 如何在驱动器中的文件中保存/导出xml?

1 个答案:

答案 0 :(得分:1)

我不确定你要用这个命令做什么:

exec xp_cmdshell 'bcp "SELECT @xml" -S <SERVERNAME> -D <DATABASE_NAME> -U <UserName> -P <PASSWORD> queryout "E:\test.xml" -T -c -t,

我可以告诉你的是错误的:

  • 您正在使用-T和-U -P

  • 混合身份验证
  • 您的查询“select @xml”无效

您可以尝试以下方式:

exec xp_cmdshell 'bcp "Select [test1]=1 for xml path" queryout e:\test.xml -T -c'

test.xml看起来像:

 <row><test1>1</test1></row>

并建立您正在寻找的输出类型。

默认情况下,xp_cmdshell在服务器上作为sql server服务帐户执行,但可以设置代理帐户。

您可能需要查看for xml以确保告诉sql server您希望如何格式化xml。

参考文献: