2012-01-10 105 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身份驗證)而不是可信連接。