0

我正在尝试导出从 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?

4

1 回答 1

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。

参考:

于 2016-12-24T17:19:31.223 回答