2012-01-10 106 views
3

我得到了一个包含一些varbinary数据的表tblScan。我想将此表导出为XML文件,以便我可以使用BCP批量插入将其插入到SQL Azure中。 (BTW是它甚至有可能到varbinary数据转换为XML?通过BCP导出XML批量导出

我做:

DECLARE @String varchar(8000) 
SET @String='bcp "SELECT * FROM dbo.tblScan FOR XML RAW, XMLSCHEMA" queryout C:\Users\DAAGEU\Desktop\tblScanOutput.xml -c -T' 
EXEC xp_cmdshell @String 

但我得到这个输出误差:

Output error

有没有其他解决方案来做到这一点?

+0

错误表示无法打开连接,但我使用的是可信连接或? – dg90 2012-01-10 10:27:21

+0

这看起来不像你用Xml做的事情,而是连接到服务器。更简单的查询(例如'SELECT COUNT(*)FROM dbo.tblScan')是否有效? – AakashM 2012-01-10 11:01:41

+0

不,这给出了相同的错误 – dg90 2012-01-10 11:06:29

回答

4

它实际上是用VARBINARY和XML(在SQL 2008 R2)一个问题:

FOR XML EXPLICIT and RAW modes currently do not support addressing binary data as URLs in column SomeComlumn. Remove the column, or use the BINARY BASE64 mode, or create the URL directly using the 'dbobject/TABLE[@PK1="V1"]/@COLUMN' syntax.

快速搜索显示this post

是否有要在XML导出particluar原因是什么?我一直在使用bcp使用默认的二进制输出,并且VarBinary字段没有问题。二进制文件比XML文件小得多。如果你不想在导出和导入之间做任何操作,我建议你使用二进制文件。

试着改变你的查询:

SET @String='bcp "SELECT * FROM dbo.tblScan FOR XML RAW, BINARY BASE64" queryout C:\Users\DAAGEU\Desktop\tblScanOutput.xml -c -T' 

然而,通过日志,看到,当前的问题是登录。您正在使用可信连接,但是当它由SQL Server引擎产生时,是否知道哪个身份正在运行bcp进程?这很可能是SQL Server的身份,我猜不能访问数据库/表(最可能的是本地系统或网络服务)。如果您仍然希望使用SQL查询而不是批处理文件(.bat或.cmd),我建议您使用显式登录凭据(SQL Server身份验证)而不是可信连接。