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

时间:2013-06-07 14:38:11

标签: 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_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”用于链接服务器“(null)”。

知道为什么吗?

2 个答案:

答案 0 :(得分:3)

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

查看服务器对象中的SQL管理工作室 - >链接服务器 - >提供商,看看它是否列出。

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

在此处下载软件:

Microsoft Access Database Engine 2010 Redistributable

答案 1 :(得分:0)

我在访问数据库时遇到了同样的错误。我使用的是这种语法:

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

然后我才知道'DataSource'应该是'数据源'。

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

它适用于我的情况。