Подтвердить что ты не робот

Поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" не может использоваться для распределенных запросов

Я хочу импортировать данные из Excel в SQL Server с помощью запросов, а не с помощью мастера. Я попробовал этот запрос:

Select * INTO g FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:\new.xlsx;HDR=YES', 'SELECT * FROM [newSheet$]');

Но я получаю эту ошибку:

Msg 7308, уровень 16, состояние 1, строка 1
Поставщик OLE DB" Microsoft.Jet.OLEDB.4.0" не может использоваться для распределенных запросов, поскольку поставщик настроен для работы в однопоточном режиме квартиры.

Итак, я искал в Google, и у меня были ответы вроде:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

Даже после переконфигурации это показывает мне ту же ошибку...

4b9b3361

Ответ 1

Согласно этот поток,:

Microsoft.Jet.OLEDB.4.0 не поддерживается для 64-разрядной ОС

Предполагая, что вы используете 64-разрядную версию SQL Server, вам, вероятно, понадобится 64-разрядный Microsoft Access Database Engine 2010, распространяемый.

И помните, что при попытке установить программное обеспечение существует небольшая морщина, если другая версия уже установлена. В этом случае установите вторую версию из командной строки, используя переключатель /пассивный. Согласно этой теме:

Запуск установки поставщика OLEDB Microsoft ACE на компьютере с установкой Office, отличной от текущей (например, 32 на 64), приведет к сбою установки. Чтобы он работал правильно, вам нужно запустить его из командной строки с указанным аргументом "/passive.

Это говорит о существующей установке Office, но то же самое относится к сосуществующим установкам ядра базы данных.

РЕДАКТИРОВАТЬ: Также убедитесь, что для строки поставщика используется "Microsoft.ACE.OLEDB.12.0", а не "Microsoft.Jet.OLEDB.4.0". (Подставка к @Rumi)

Ответ 2

Используйте SQL, как показано ниже:

  SELECT * into temptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 12.0;Database=D:\new.xlsx','select * from [sheet1$]')