安装在Windows 2008 64位计算机上的SQL Server 2008 R2上的Openrowset

安装在Windows 2008 64位计算机上的SQL Server 2008 R2上的Openrowset,sql,sql-server-2008,sql-server-2005,tsql,Sql,Sql Server 2008,Sql Server 2005,Tsql,我正在尝试在Windows 2008 64位计算机上安装的SQL Server 2008 R2上使用Openrowset。当我执行以下查询时,我遇到如下错误。请帮助我解决 SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=E:\01112012.xls;','SELECT * FROM [Sheet1$]') 错误: Msg 7403,16级,状态1,第1行 OLE DB提供程序“Microsoft.J

我正在尝试在Windows 2008 64位计算机上安装的SQL Server 2008 R2上使用Openrowset。当我执行以下查询时,我遇到如下错误。请帮助我解决

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=E:\01112012.xls;','SELECT * FROM [Sheet1$]')
错误:

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

是否已安装:->

  • 此下载将安装一组组件,以便于在现有Microsoft Office文件(如Microsoft Office Access 2010(*.mdb和.accdb)文件和Microsoft Office Excel 2010(.xls、*.xlsx和*.xlsb)文件之间向其他数据源(如Microsoft SQL Server)传输数据。还支持与现有文本文件的连接。ODBC和OLEDB驱动程序是为应用程序开发人员安装的,用于开发与Office文件格式连接的应用程序
在64位版本的windows中运行OPENROWSET

1-安装AccessDatabaseEngine_x64.exe(需要重新启动)

2-如果您使用的是SQL Management Studio,请以管理员身份运行Management Studio。如果不以管理员帐户的身份运行,则会出现此错误(无法为链接服务器(null)初始化OLE DB提供程序“MICROSOFT.ACE.OLEDB.12.0”的数据源对象)

3-运行此命令以配置数据库

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE with override;
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE with override;
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
4-不要在OPENROWSET函数中使用“select*from sheet1$”。请尝试此代码

select * from OPENROWSET('MICROSOFT.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;DATABASE=D:\test.xlsx', sheet1$)

如果仍然存在(32位)错误,请尝试重新启动SQL服务,并检查您的C:\Windows\Temp,查看您是否有权访问此目录。

是的,我确实在计算机上安装了此目录。安装此目录后,我更改了上面的查询,它对我来说运行正常。下面是修改后的查询。从OPENROWSET中选择*('MICROSOFT.ACE.OLEDB.12.0'、'Excel 12.0;HDR=YES;DATABASE=E:\01112012.xls',sheet1$)在我安装MICROSOFT Access数据库引擎2010可再发行版后,我更改了上面的查询,它对我来说运行良好。下面是修改后的查询。从OPENROWSET中选择*('MICROSOFT.ACE.OLEDB.12.0'、'Excel 12.0;HDR=YES;DATABASE=E:\01112012.xls',sheet1$)