我正在尝试将XML文件导入SQL Server 2000(SP2)表。我尝试了下面的查询,它在单词BULK
附近给出了语法错误。不完全确定BULK
和SINGLE_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。无法升级服务器,也无法使用第三方工具。在这些界限内,请建议我实现这一目标的方法。提前谢谢。
答案 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_preparedocument
和OPENXML
来阅读它。