1

当我在 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$]')

我收到这个错误

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

知道为什么吗?

4

2 回答 2

3

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

在 Server Objects -> Linked Servers -> Providers 中查看 SQL management studio,看看它是否被列出。

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

在此处下载软件:

Microsoft Access 数据库引擎 2010 可再发行组件

于 2013-06-11T08:55:08.997 回答
0

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

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

然后我知道'DataSource'应该是'Data Source'。

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

它适用于我的情况。

于 2015-11-09T13:10:03.117 回答