'Microsoft.ACE.OLEDB.12.0' 64x Sql Server и 86x Office? - PullRequest
4 голосов
/ 24 мая 2010

Ошибка:

Поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» не может использоваться для распределенных запросов, поскольку поставщик настроен для работы в однопоточном режиме квартиры.

И ответы, которые я вижу, это конфликт между 64-битным Sql Server и 32-битным Office.Есть ли способ запустить openrowset в Excel на 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]')

Ответы [ 6 ]

8 голосов
/ 28 февраля 2014

... ключ в том, чтобы установить 64-битный механизм доступа с использованием флага / passive:

c:> AccessDatabaseEngine_64 / passive

2 голосов
/ 24 мая 2010

Похоже, Microsoft еще не придумала решение по этому вопросу. проверьте форму обратной связи продуктов Microsoft

У них есть некоторые обходные пути, такие как использование SSIS

1 голос
/ 22 июля 2010

Сначала необходимо установить распространяемый 64-разрядный Microsoft Access Database Engine 2010, который можно скачать здесь .

Предположим, что ваш файл 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$

Приведенный выше запрос выполняется в 64-разрядной версии Windows Server 2008 с 64-разрядной версией SQL Server 2005 и 64-разрядной версией SQL Server 2008 R2.

Ключом является указание 64-разрядного поставщика «Microsoft.ACE.OLEDB.12.0» вместо 32-разрядного только Jet engine.

0 голосов
/ 29 августа 2017

Ситуация: MS Office 2010 (x86 / 32bit) в Windows 7 (x64 / 64bit) с установленным SQL Server 2014 (x64 / 64bit)

Наше решение:

  1. Остановите SQL Server при запуске и закройте все открытые программы MS Office

  2. Загрузите MS Access Database Engine 2010, распространяемый как 64-разрядная версия: https://www.microsoft.com/de-de/download/details.aspx?id=13255

  3. Откройте командную оболочку Windows (Start-Execute- "cmd") с правами администратора и выполните загруженный файл установки следующим образом: AccessDatabaseEngine_X64.exe /passive

  4. Запустите regedit и перейдите к следующемуключ: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPath.Переименуйте значение mso.dll в mso.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$]');
    
0 голосов
/ 08 июля 2014

Я установил распространяемый 64-разрядный Microsoft Access Database Engine 2010 безуспешно. Я использую 64-разрядную версию W7, Office 2010 и SQL 2008 R2.

Мастер импорта / экспорта подготавливает пакет, но когда я решаю сохранить пакет и выполнить его, он выполняется просто отлично. Это когда я открываю пакет на MS VS 2008, он дал мне ошибку. Установка Access Database Engine 2010 не решила проблему. Я попробовал 2007, и это сработало.

Иди цифрами.

0 голосов
/ 28 февраля 2014

Я столкнулся с той же самой проблемой, и единственное, что я мог когда-либо сделать, это компонент источника данных служб SSIS, где вы можете использовать его как часть рабочего процесса

...