Вопрос

Ошибка:

Оле БД поставщика «Microsoft.ace.OLEDB.12.0» не может использоваться для распределенных запросов, потому что провайдер настроен для запуска в режиме однопоточной квартиры.

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

Решение 2

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

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

Другие советы

... Ключ должен установить 64-битный двигатель доступа с помощью / пассивным флагом:

C:> AccessDatabaseengine_64 / Passive

Вы должны установить Microsoft Access Database Manager 2010 Redistributableable 64-BING, что вы можете Скачать сюда.

Предположим, что ваш файл Excel: E: Thumbers.xls и ваше имя листа Excel: Sheet1

Запустите следующее, чтобы получить данные из файла Excel:

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

Вышеуказанный запрос работает на Windows Server 2008 64-бит с SQL Server 2005 64-битным и SQL Server 2008 R2 64-BIT.

Ключ состоит в том, чтобы указать 64-битный поставщик «Microsoft.ace.Oledb.12.0» вместо 32-битного только реактивного двигателя.

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

Я установил Microsoft Access Database Engine Engine 2010 Redistribulabletable 64-бит без успеха. Я бегаю W7 64bit, Office 2010 и SQL 2008 R2.

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

Идти фигуры.

Ситуация: 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 Redistributable как X64 / 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 Control. Перейдите к административным инструментам, услуги и откройте свойства сервера 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$]');
    
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top