首页 >数据库 >mysql教程 >为什么我的 SQL Server 无法实例化用于链接服务器导出到 Excel 的 OLE DB 提供程序?

为什么我的 SQL Server 无法实例化用于链接服务器导出到 Excel 的 OLE DB 提供程序?

Susan Sarandon
Susan Sarandon原创
2024-12-20 20:40:10408浏览

Why Can't My SQL Server Instantiate the OLE DB Provider for Linked Server Exports to Excel?

无法实例化链接服务器的 OLE DB 提供程序

问题:

尝试时使用 T-SQL 查询将数据从表导出到 Excel 时,出现错误“无法创建实例”链接服务器的 OLE DB 提供程序 Microsoft.Jet.OLEDB.4.0 为 null”。

原因:

此错误通常在以下情况下出现:

  • 用户缺乏足够的权限来访问 OPENROWSET 使用的临时文件夹。
  • The 32 位 OLE DB 提供程序 (Microsoft.Jet.OLEDB.4.0) 无法在 64 位 SQL Server 上进程内加载。

64 位 SQL Server 的解决方案:

  1. 下载并安装 Microsoft.ACE.OLEDB.12.0对于 Windows 64 位。
  2. 向运行 SQL Server 的帐户授予对临时目录(C:WindowsServiceProfilesNetworkServiceAppDataLocalTemp 对于网络服务帐户) 的访问权限。
  3. 启用临时分布式查询并配置 Microsoft.ACE.OLEDB属性:

    SP_CONFIGURE 'show advanced options', 1;
    GO
    RECONFIGURE;
    SP_CONFIGURE 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
  4. 注册msexcl40.dll:

    regsvr32 C:\Windows\SysWOW64\msexcl40.dll

其他注意:

  • 对于 SQL Server 2014 及更高版本,请在 EXEC sp_MSset_oledb_prop 命令中使用“DynamicParameters”而不是“DynamicParam”。
  • 确保运行查询的用户具有必要的权限,例如“IMPERSONATE”和“ALTER任何链接的服务器。”
  • 如果仍然遇到问题,请检查 SQL Server 配置管理器中“OLE DB 提供程序设置”下的“MessageBoxText”是否设置为“3”。

以上是为什么我的 SQL Server 无法实例化用于链接服务器导出到 Excel 的 OLE DB 提供程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn