2014-10-20 84 views
0

我试图将XML fie导入到SQL Server 2000(SP2)表中。我尝试了下面的查询,并在BULK这个词的附近给出了语法错误。不完全确定BULKSINGLE_BLOB是否在SQL Server 2000 SP2中工作。使用OPENROWSET将XML文件导入SQL Server 2000

SELECT * FROM OPENROWSET(BULK N'E:\temp\PersonData.xml', SINGLE_BLOB) AS x 

也试过下面的查询....

SELECT * FROM OPENROWSET('MSDASQL', 
'Driver={Microsoft Text Driver (*.xml)};DefaultDir=E:\temp\PersonData.xml;', 
'SELECT * FROM [PersonData.xml];') 

....,它给了这个错误:

[OLE/DB provider returned message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified]
OLE DB error trace [OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005: ].

我在做什么错在这里?或者它是一个SQL Server 2000的问题?我的目标是使用存储过程将XML文件导入到SQL Server中。无法升级服务器,也无法使用第三方工具。在这些范围内,请为我提供一种实现此目的的方法。提前致谢。

回答

1

OPENROWSET(BULK ...)是在SQL Server 2005中引入的,所以你不能使用它。

OPENROWSET('MSDASQL', ...)因提供无用的错误消息而臭名昭着。有关相关问题,请参阅Error: "OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Driver Manager] Data source name not found ...";这表明文件名不应该是DefaultDir参数的一部分(因此DefaultDir=E:\temp)。

如果一切都失败了,您可以使用BULK INSERT以伪造的值作为字段和行终止符以读取单个NTEXT列中的整个文件;您可以使用sp_xml_preparedocumentOPENXML来阅读它。

+0

关于使用BULK INSERT的好消息。工作。非常感谢 – nlkasyap 2014-10-20 11:56:34