Openrowset на SQL Server 2008 R2 установлен на 64-разрядной машине Windows 2008 - PullRequest
2 голосов
/ 11 января 2012

Я пытаюсь работать с Openrowset на SQL Server 2008 R2, установленном на 64-разрядной машине Windows 2008. Когда я выполняю следующий запрос, я получаю сообщение об ошибке, как показано ниже. Пожалуйста, помогите мне.

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=E:\01112012.xls;','SELECT * FROM [Sheet1$]')

ОШИБКА:

Сообщение 7403, уровень 16, состояние 1, строка 1 Поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" не зарегистрирован.

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Установили ли вы: -> Microsoft Access Database Engine 2010, распространяемый

  • Эта загрузка установит набор компонентов, облегчающих передачу данных между существующими файлами Microsoft Office, такими как файлы Microsoft Office Access 2010 (* .mdb и .accdb) и Microsoft Office Excel 2010 (). файлы xls, * .xlsx и * .xlsb) для других источников данных, таких как Microsoft SQL Server. Подключение к существующим текстовым файлам также поддерживается. Драйверы ODBC и OLEDB устанавливаются для того, чтобы разработчики приложений могли использовать их при разработке приложений с подключением к форматам файлов Office.
0 голосов
/ 23 апреля 2015

Для запуска OPENROWSET в 64-битной версии Windows.

1- Установите AccessDatabaseEngine_x64.exe (требуется перезагрузка).

2- Если вы используете SQL Management Studio, запустите Management Studioкак администраторЕсли вы не запустите ее как учетную запись администратора, у вас будет эта ошибка (Невозможно инициализировать объект источника данных поставщика OLE DB "MICROSOFT.ACE.OLEDB.12.0" для связанного сервера "(null)".

3- Запустите эту команду для настройки вашей базы данных

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE with override;
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE with override;
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO

4- Не используйте 'select * from sheet1 $' в функции OPENROWSET. Попробуйте этот код.

select * from OPENROWSET('MICROSOFT.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;DATABASE=D:\test.xlsx', sheet1$)

ЕслиТем не менее, у вас есть (32-разрядная) ошибка, попробуйте перезапустить службу SQL и проверьте C: \ Windows \ Temp и посмотрите, есть ли у вас доступ к этому каталогу или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...