Tsql 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;“用于链接服务器”;(无效)“;

Tsql 无法初始化OLE DB provider的数据源对象;Microsoft.ACE.OLEDB.12.0“;“用于链接服务器”;(无效)“;,tsql,sql-server-2012,Tsql,Sql Server 2012,在SQL Server 2012中运行以下命令时 exec sp_configure 'Advanced', 1 RECONFIGURE exec sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 EXEC master.dbo.sp_MSset_oled

在SQL Server 2012中运行以下命令时

 exec sp_configure 'Advanced', 1 RECONFIGURE
 exec sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE
 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

 SELECT * INTO dbo.Normalization FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\_sandbox\Consolidations.xlsx','SELECT * FROM [Codes and Values$]')
我得到这个错误

无法初始化OLE DB提供程序的数据源对象 “Microsoft.ACE.OLEDB.12.0”用于链接服务器(空)”


知道为什么吗?

是否安装了提供商?默认情况下,Microsoft.ACE.OLEDB.12.0提供程序不存在,因此如果您尚未安装它,则无法对其进行初始化

在SQLServerManagementStudio中的服务器对象->链接服务器->提供程序中进行查看,看看是否列出了它

如果没有,则需要安装Microsoft Access数据库引擎(x86或x64,具体取决于您的SQL server安装),该引擎将为您安装提供程序

在此处下载软件:


我在access数据库中遇到了相同的错误。我使用了以下语法:

SELECT * FROM OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0','DataSource=D:\test.mdb')...[MyTableName]
然后我知道“数据源”应该是“数据源”

SELECT * FROM OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0','Data Source=D:\test.mdb')...[MyTableName]

在我的情况下,它是有效的。

如果我有office 32位和sql server 64位,该怎么办?您需要下载sql server的正确版本以供使用,正如我以前在开发人员计算机上发现的那样,如果其他office组件不可用,则需要卸载它们match@steoleary,我有同样的问题,但我有你说的路径上列出的供应商。这是我的查询
从OPENROWSET('Microsoft.ACE.OLEDB.12.0','X:\path\filename.mdb','password')中选择*
我哪里出错了?在此之前,我执行了这个
Exec sp_configure'show advanced options',1;重新配置;GO Exec sp_配置“临时分布式查询”,1;重新配置;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;我不记得确切的语法,但我记得当从access数据库中选择数据时,必须在发送到openrowset的参数中提供查询,类似于从openrowset中选择*('Microsoft.ACE.OLEDB.12.0',';数据源=X:\path\filename.mdb;','SELECT*from table'))否则openrowset将无法返回任何数据。