'Microsoft.ace.OledB.12.0' 64x SQL Server и 86x Office?
-
04-10-2019 - |
Вопрос
Ошибка:
Оле БД поставщика «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)
Наше решение:
Остановите SQL Server, если он работает и закрыть любые открытые программы MS Office
Скачать MS Access Database Engine 2010 Redistributable как X64 / 64-битная версия: https://www.microsoft.com/de-de/download/details.aspx?id=13255.
Откройте командную оболочку Windows (START-EXECUTE - «CMD») с правами администратора и выполняемой загрузкой файлом установки следующим образом:
AccessDatabaseEngine_X64.exe /passive
Начните Regedit и перейдите к следующему ключу:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPath
. Отказ Переименовать значениеmso.dll
вmso.dll.rename
Нам также нужно было предоставить полные права каждому за папку, где хранились файлы XLSX, которые мы хотели импортировать (не делайте этого на многопользовательских машинах или на общих папках).
Откройте систему Windows Control. Перейдите к административным инструментам, услуги и откройте свойства сервера MS SQL Server. В разделе «Войти» выберите «Локальный системный счет». Сохранить и перезапустите MS SQL Server.
Откройте 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
Проверьте со следующим утверждением T-SQL:
SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=C:\YourFolder\File.xlsx', 'SELECT * FROM [Sheet1$]');