Не удалось инициализировать объект источника данных поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)»

Когда я запускаю следующие команды в SQL Server 2012

 exec sp_configure 'Advanced', 1 RECONFIGURE
 exec sp_configure 'Ad Hoc Distributed Queries', 1 RECONFIGURE
 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
 EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

 SELECT * INTO dbo.Normalization FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\_sandbox\Consolidations.xlsx','SELECT * FROM [Codes and Values$]')

Я получаю эту ошибку

Не удается инициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(ноль)".

Есть идеи почему?

Ответы на вопрос(2)

Решение Вопроса

Поставщик установлен? Поставщик Microsoft.ACE.OLEDB.12.0 не являетсят там по умолчанию и так, если у вас нетустановил это, это победит 'не сможет быть инициализирован.

Загляните в студию управления SQL в Server Objects -> Связанные серверы -> Провайдеры и посмотреть, если он указан.

Если нет, вам нужно установить Microsoft Access Database Engine (x86 или x64 в зависимости от установки вашего SQL-сервера), который установит провайдера для вас.

Загрузите программное обеспечение здесь:

Microsoft Access Database Engine 2010 распространяемый

 pvzkch21 июл. 2014 г., 01:10
@ steleary, у меня та же проблема, но у меня указан провайдер в указанном вами пути. Вот мой запросSELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'X:\path\filename.mdb',' password') Где я неправ? До этого я выполнил этоExec sp_configure 'show advanced options', 1; RECONFIGURE; GO Exec sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; 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
 Juan Pablo Gomez13 нояб. 2013 г., 21:06
Да, вы правы, спасибо за вашу помощь.
 steoleary21 июл. 2014 г., 13:28
Сверху головы я могуЯ не помню точный синтаксис, но я помню, что при выборе данных из БД доступа, вы должны предоставить запрос в параметрах, отправленных в openrowset, что-то вроде SELECT * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0' ,»; Источник данных = X: \ path \ filename.mdb; ','SELECT * from table ') иначе openrowset выигралне сможет вернуть любые данные.
 Juan Pablo Gomez13 нояб. 2013 г., 18:15
Что делать, если у меня есть офисный 32-битный и sql сервер 64 бит?
 steoleary13 нояб. 2013 г., 18:20
Вам необходимо скачать правильную версию для использования SQL-сервером, которая, как я уже выяснил ранее, на компьютере разработчика включает в себя удаление других компонентов офиса, если они нет матч

Я получал ту же ошибку с базой данных доступа. Я использовал этот синтаксис:

SELECT * FROM OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0','DataSource=D:\test.mdb')...[MyTableName]

Тогда я узнаю, чтоИсточник данных' должно быть 'Источник данных'.

SELECT * FROM OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0','Data Source=D:\test.mdb')...[MyTableName]

Это работает в моем случае.

Ваш ответ на вопрос