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

时间:2012-01-10 21:54:22

标签: 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,Level 16,State 1,Line 1 OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”尚未注册。

2 个答案:

答案 0 :(得分:3)

您安装了: - > Microsoft Access Database Engine 2010 Redistributable

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

答案 1 :(得分:0)

在64位版本的Windows中运行OPENROWSET。

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

2-如果您使用的是SQL Management Studio,请以管理员身份运行Management Studio。如果不以管理员帐户运行它,则会出现此错误(无法初始化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,看看是否可以访问此目录。