Я пытаюсь экспортировать данные из Table
в запрос с Excel
по T-SQL
. После небольшого исследования я придумал это
INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=G:\Test.xls;',
'SELECT * FROM [Sheet1$]')
SELECT *
FROM dbo.products
Когда я выполняю вышеуказанный запрос, я получаю эту ошибку
Сообщение 7302, уровень 16, состояние 1, строка 7 Не удается создать экземпляр поставщика OLE DB «Microsoft.Jet.OLEDB.4.0» для связанного сервера «(null)».
Итак, прошел через Интернет для решения, получил ссылку ниже
В приведенной выше ссылке они говорили, что нам нужно быть администратором, чтобы создать папку на диске C в папке TEMP
, поскольку OPENROWSET
создает некоторые файлы или папку внутри папки TEMP
Я делаю это на своем домашнем ПК и являюсь администратором. Все еще получаю ту же ошибку.
Сведения о SQL SERVER
Microsoft SQL Server 2016 (RC1) — 13.0.1200.242 (X64) 10 марта 2016 г. 16:49:45 Авторское право (c) Microsoft Corporation Enterprise Evaluation Edition (64-разрядная версия) в Windows 10 Pro 6.3 (сборка 10586: )
Любые указатели на решение проблемы будут высоко оценены
Обновление: я уже настроил Ad Hoc Distributed Queries
и
Выполнил следующие запросы
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO
теперь я получаю эту ошибку
Сообщение 7438, уровень 16, состояние 1, строка 7. 32-разрядный поставщик OLE DB «Microsoft.Jet.OLEDB.4.0» не может быть загружен в процессе на 64-разрядном SQL Server.
SELECT * FROM dbo.products
должно быть -INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=G:\Test.xls;', 'SELECT * FROM [Sheet1$]')
- person Krishnraj Rana   schedule 02.05.2016The 32-bit OLE DB provider "Microsoft.Jet.OLEDB.4.0" cannot be loaded in-process on a 64-bit SQL Server.
- person Pரதீப்   schedule 12.05.2016