在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)”。
知道为什么吗?
答案 0 :(得分:3)
是否安装了提供商?默认情况下,Microsoft.ACE.OLEDB.12.0提供程序不存在,因此如果您尚未安装它,则无法初始化它。
查看服务器对象中的SQL管理工作室 - >链接服务器 - >提供商,看看它是否列出。
如果没有,您需要安装Microsoft Access数据库引擎(x86或x64,具体取决于您的SQL服务器安装),它将为您安装提供程序。
在此处下载软件:
答案 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]
它适用于我的情况。