代码之家  ›  专栏  ›  技术社区  ›  AMouat danludwig

无法初始化OLE DB provider Microsoft的数据源对象。王牌。OLEDB。12.0用于链接服务器(null)

  •  5
  • AMouat danludwig  · 技术社区  · 7 年前
    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)
    

    今天我遇到了微软的一个问题。王牌。OLEDB。SSIS 2012中的12.0驱动程序。上面的脚本位于一个存储过程中,该存储过程动态加载。基于存储过程所在的SSIS循环提供的当前文件,csv被输入数据库。目录中有文件。

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

    直到今天,这一切都很顺利。今天我遇到了以下错误:

    执行查询“EXEC[dbo].[CreateAndImportCSVs]?”失败,出现以下错误:“无法初始化OLE DB provider”Microsoft的数据源对象。王牌。OLEDB。12.0“用于链接服务器”(null)”。 可能的失败原因:查询问题、“ResultSet”属性未正确设置、参数未正确设置或连接未正确建立。

    在这个问题上有任何帮助都会很好!

    编辑

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

    Microsoft Office Access Runtime and Data Connectivity 2007(SP3) http://support.microsoft.com/kb/2526310

    http://www.microsoft.com/downloads/details.aspx?FamilyId=E93AB1BE-ADE6-4FF8-8637-DBD3EBE3C5C5&displaylang=en

    5 回复  |  直到 7 年前
        1
  •  2
  •   Hadi    7 年前

    有很多事情需要尝试:

    1. 检查ACE提供程序的进程内和动态提供程序选项
    2. 检查临时文件夹的权限
    3. 检查分配的MemToLeave内存区域
    4. 确保 EXCEL 进程未在后台运行
    5. 确保已启用“临时分布式查询”(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"

    此外,我在以下链接中找到了一个有趣的建议解决方案,请看:

        2
  •  2
  •   AMouat danludwig    7 年前

    这个问题自行解决了。安装了更多更新,其中一个必须已修复以前更新引入的问题:

    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

    谢谢你的帮助!

        3
  •  1
  •   John Livengood    4 年前

    为我解决这个问题的最后一件事是将电子表格移动到SQL Server能够访问的windows目录。我将电子表格移到了一个新的子目录,在sql数据库所在的目录中,问题得到了解决。

        4
  •  1
  •   Venkataraman R    3 年前

    如果office的安装是单击以运行安装,则SQL Server无法访问访问提供程序。

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

    OLEDB driver issues resolution

    决议

    从适用于企业版2009的Microsoft 365应用程序开始 已经完成,以打破ACE的C2R虚拟化泡沫 中Access数据库引擎提供的OLEDB和DAO接口 C2R安装。

    使用下表了解是否需要其他组件 在您的环境中访问这些接口所必需的: OLEDB driver issues

        5
  •  0
  •   n8.    7 年前

    可能不是解决方案,但执行SQL时应使用:

    sp_executesql @SQL
    

    它可以防止注射和wotnot。