4

错误:

OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。

我看到的答案是 64 位 Sql Server 和 32 位 Office 之间的冲突。有没有办法将 Excel 上的 openrowset 运行到 Sql Server 中?

insert into dbo.FiscalCalendar 
select * from 
openrowset('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml;Database=C:\Users\uname\Desktop\fy11.xlsx;',
'Select * from [Sheet1]')
4

6 回答 6

8

...关键是使用 /passive 标志安装 64 位访问引擎:

c:>AccessDatabaseEngine_64 /passive

于 2014-02-28T18:55:42.060 回答
2

看起来微软还没有提出解决方案。 检查 Microsoft 产品反馈表

他们有一些解决方法,例如使用 SSIS

于 2010-05-24T18:35:56.313 回答
1

您必须先安装 Microsoft Access Database Engine 2010 Redistributable 64 位,您可以从此处下载

假设您的 Excel 文件为:E:\Sample.xls,您的 Excel 工作表名称为:Sheet1

运行以下命令从 Excel 文件中获取数据:

SELECT * FROM OPENDATASOURCE( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="E:\Sample.xls";
Extended properties=Excel 8.0')...Sheet1$

上述查询在安装了 SQL Server 2005 64 位和 SQL Server 2008 R2 64 位的 Windows Server 2008 64 位上运行。

关键是要指定 64 位提供程序“Microsoft.ACE.OLEDB.12.0”,而不是仅 32 位的 Jet 引擎。

于 2010-07-21T22:53:37.743 回答
0

我遇到了同样的问题,我唯一能做的就是一个 SSIS 数据源组件,您可以在其中使用它作为工作流的一部分

于 2014-02-28T19:20:25.820 回答
0

我安装了 Microsoft Access Database Engine 2010 Redistributable 64 位,但没有成功。我正在运行 W7 64 位、Office 2010 和 SQL 2008 R2。

导入/导出向导准备了包,但是当我选择保存包并执行它时,它执行得很好。当我在 MS VS 2008 上打开包时,它给了我错误。安装 Access Database Engine 2010 并没有解决问题。我尝试了 2007 年,它成功了。

去数字。

于 2014-07-08T13:44:15.330 回答
0

情况:安装了 SQL Server 2014 (x64/64bit) 的 Windows 7 (x64/64bit) 上的 MS Office 2010 (x86/32bit)

我们的解决方案:

  1. 如果正在运行并关闭任何打开的 MS Office 程序,则停止 SQL Server

  2. 以 x64/64 位版本下载 MS Access 数据库引擎 2010 Redistributable:https ://www.microsoft.com/de-de/download/details.aspx?id=13255

  3. 以管理员权限打开 windows 命令外壳(开始-执行-“cmd”)并执行下载的安装文件,如下所示: AccessDatabaseEngine_X64.exe /passive

  4. 启动 regedit 并转到以下键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPath. 将值重命名mso.dllmso.dll.rename

  5. 我们还需要为存储我们想要导入的 XLSX 文件的文件夹授予所有人的完全权限(不要在多用户计算机或共享文件夹上执行此操作)。

  6. 打开windows系统控制。转到管理工具、服务并打开 MS SQL Server 服务的属性。在“登录”下选择“本地系统帐户”。保存并重新启动 MS SQL Server。

  7. 打开 SQL Server Management Studio,连接到您的 MS SQL Server 实例并运行以下 T-SQL 语句:

    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
    
  8. 检查以下 T-SQL 语句:

    SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=C:\YourFolder\File.xlsx', 'SELECT * FROM [Sheet1$]');
    
于 2017-08-29T14:17:51.030 回答