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

Cannot initialize the data source object of OLE DB provider Microsoft.ACE.OLEDB.12.0 for linked server (null)

DECLARE @PATH NVARCHAR(1000) = N'\MY-SERVER\C$\Folder\'
DECLARE @TABLE NVARCHAR(50) = SUBSTRING(@FILENAME,0,CHARINDEX('.',@FILENAME))
DECLARE @SQL NVARCHAR(4000) = 
    N'IF OBJECT_ID(''dbo.' + @TABLE + ''' , ''U'') IS NOT NULL 
    DROP TABLE dbo.[' + @TABLE + ']
    SELECT * INTO [' + @TABLE + ']
    FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0''
                    ,''Text; Database='+@PATH+';''
                    ,''SELECT * FROM [' + @FILENAME + ']'')'

EXEC(@SQL)

今天我在 SSIS 2012 中遇到了 Microsoft.ACE.OLEDB.12.0 驱动程序的问题。上面的脚本位于一个存储过程中,它根据提供的当前文件将 .csv 动态加载到数据库中通过存储过程所在的 SSIS 循环。目录中有文件。

当直接在 SQL Server Management Studio 中 运行 时,存储过程 运行 正确。

直到今天,这一直运行良好。今天我收到以下错误:

Executing the query "EXEC [dbo].[CreateAndImportCSVs] ?" failed with the following error: "Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

任何关于这个问题的帮助都会很棒!

编辑

所以当我查看昨天安装在服务器上的 windows 更新时,我听到了警钟!安装了以下两个:

Microsoft Office Access 运行时和数据连接 2007 (SP3) http://support.microsoft.com/kb/2526310

2007 Microsoft Office 系统更新 (KB967642) http://www.microsoft.com/downloads/details.aspx?FamilyId=E93AB1BE-ADE6-4FF8-8637-DBD3EBE3C5C5&displaylang=en

很多事情要尝试:

  1. 检查 ACE 提供程序的进程中和动态提供程序选项
  2. 检查 Temp 文件夹的权限
  3. 查看分配的MemToLeave内存区域
  4. 确保 EXCEL 进程不在后台 运行
  5. 确保 'ad hoc distributed queries' 已启用 (1)

    USE [master]
    GO
    
    EXEC sp_configure 'Show Advanced Options', 1
    RECONFIGURE
    GO
    
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    GO
    
    EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    GO
    
    EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    GO
    

How to solve Microsoft.ACE.OLEDB.12.0 error "Unspecified error"

阅读更多内容

我还在下面 link 中找到了一个有趣的建议解决方案,请看一下:

可能不是解决方案,但您应该执行 SQL:

sp_executesql @SQL

它可以防止注射和 wotnot。

此问题自行解决。安装了更多更新,其中之一必须解决了之前更新引入的问题:

Microsoft Office 2010 更新 (KB4011188) 64 位版本 https://support.microsoft.com/kb/4011188

Microsoft Office 2010 (KB2553347) 64 位版本更新 http://support.microsoft.com/kb/2553347

Microsoft Office 2010 安全更新 (KB2553338) 64 位版本 https://support.microsoft.com/kb/2553338

感谢您为此提供的所有帮助!

为我解决此问题的最后一步是将电子表格移动到 SQL 服务器能够访问的 windows 目录。我将我的电子表格移动到一个新的子目录,直接位于我的 sql 数据库所在的位置,问题已解决。

SQL服务器无法访问Access provider,如果office的安装是点击运行安装。

可以通过以下任一方法解决该问题。

OLEDB driver issues resolution

Resolution

Beginning with Microsoft 365 Apps for Enterprise Version 2009, work has been completed to break ACE out of the C2R virtualization bubble so that applications outside of Office are able to locate the ODBC, OLEDB and DAO interfaces provided by the Access Database Engine within the C2R installation.

Use the following table to understand if additional components are necessary to access these intefaces within your environment: