如何解决“OLE DB提供程序'Microsoft.Jet.OLEDB.4.0'未注册”的问题?

5

我正在尝试从Excel文件中获取数据。我使用的是Office 2007和SQL 2005。我编写了以下代码:

CREATE TABLE [dbo].[Addresses_Temp] (
    [FirstName]   VARCHAR(20),
    [LastName]    VARCHAR(20),
    [Address]     VARCHAR(50),
    [City]        VARCHAR(30),
    [State]       VARCHAR(2),
    [ZIP]         VARCHAR(10)
)
GO

INSERT INTO [dbo].[Address_Temp] ( [FirstName], [LastName], [Address], [City], [State], [ZIP] )
SELECT [FirstName], [LastName], [Address], [City], [State], [ZIP]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=C:\Source\Addresses.xls;IMEX=1',
                'SELECT * FROM [Sayfa1$]')

错误:Msg 7403,级别16,状态1,第2行 OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”未注册。

我该如何解决?


2
这是在32位还是64位的SQL服务器上? - codingbadger
在一个新的查询中执行 select @@Version 它会告诉你它是32位还是64位。 - codingbadger
1
微软已经回应了四年来的请求,现在可以实现。http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 - user2167402
2个回答

7

如果您正在从SQL Agent作业运行SSIS包,则在从MSDB或文件系统选择ssis包后,转到执行选项选项卡并选中“使用32位运行时”选项。

对我很有用。


2

如果您使用32位的SQL Server,您需要手动安装驱动程序,因为从MDAC 2.6开始不再包含驱动程序。您可以在此处下载

对于64位的SQL Server,很遗憾这已经不可能了。Jet Engine驱动程序没有被移植到64位,也不会在将来移植。 您可以使用SSIS导入Excel文档,但不能使用OpenRowSet查询。还有另一种选择在这里,但它似乎是一个有些繁琐的过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接