使用OPENROWSET将XML文件导入SQL Server 2000

时间:2014-10-20 10:11:03

标签: sql-server xml

我正在尝试将XML文件导入SQL Server 2000(SP2)表。我尝试了下面的查询,它在单词BULK附近给出了语法错误。不完全确定BULKSINGLE_BLOB是否在SQL Server 2000 SP2中有效。

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提供程序返回消息:[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序]
  OLE DB错误跟踪[OLE / DB提供程序'MSDASQL'IDBInitialize :: Initialize返回0x80004005:]。

我在这里做错了什么?或者它是SQL Server 2000的问题吗?我的目标是使用存储过程将XML文件导入SQL Server。无法升级服务器,也无法使用第三方工具。在这些界限内,请建议我实现这一目标的方法。提前谢谢。

1 个答案:

答案 0 :(得分: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来阅读它。