Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
Аленочка
Member

Откуда: Владик
Сообщений: 2162
Добрый день, коллеги.
Нужно выгрузить данные запроса в Excel 2016.

Мой код:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.16.0', 'Excel 16.0;Database=D:\test.xlsx','select * from [1$]')
select * from dbo.[test]


Результат:

The OLE DB provider "Microsoft.ACE.OLEDB.16.0" has not been registered.

Поставила вот эту штуку https://www.microsoft.com/en-us/download/details.aspx?id=54920
Поставилось успешно, но ошибка так и осталась...как мне узнать нужное имя провайдера и если чего-то не хватает для экспорта - доустановить ? =)

-----------------------------------------------
А мы тут плюшками балуемся...

Аленочка тм
1 мар 19, 06:38    [21822346]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30764
Аленочка
Поставилось успешно, но ошибка так и осталась...как мне узнать нужное имя провайдера и если чего-то не хватает для экспорта - доустановить ? =)
Почему Microsoft.ACE.OLEDB.16.0? А не Microsoft.ACE.OLEDB.12.0?
И смотрите, что бы устанавливалась 64 бит библиотека, а не 32
1 мар 19, 06:51    [21822350]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30764
alexeyvg
Почему Microsoft.ACE.OLEDB.16.0? А не Microsoft.ACE.OLEDB.12.0?
Посмотреть, какие провайдеры установлены, можно в реестре, искать в HKEY_CLASSES_ROOT по ключу OLE DB Provider, за ним будет ключ ProgID, там в Data будет имя провайдера.
Вроде есть способ сразу получить список, но что то не вспоминается.
1 мар 19, 07:10    [21822356]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30764
alexeyvg
Вроде есть способ сразу получить список, но что то не вспоминается.
exec master.dbo.xp_enum_oledb_providers
1 мар 19, 07:13    [21822358]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
Аленочка
Member

Откуда: Владик
Сообщений: 2162
alexeyvg,

с 12-ой версией так же не работает The OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been registered.
библиотека 64 бит у меня не поставилась((
1 мар 19, 07:54    [21822376]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
Аленочка
Member

Откуда: Владик
Сообщений: 2162
alexeyvg
alexeyvg
Вроде есть способ сразу получить список, но что то не вспоминается.
exec master.dbo.xp_enum_oledb_providers


SQLOLEDB = Microsoft OLE DB Provider for SQL Server
1 мар 19, 08:18    [21822382]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30764
Аленочка
библиотека 64 бит у меня не поставилась((
А нужно поставить. У вас же MSSQL 64 бит, он видит только 64 бит библиотеки.
1 мар 19, 08:30    [21822384]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
court
Member

Откуда:
Сообщений: 1956
Аленочка
Поставила вот эту штуку https://www.microsoft.com/en-us/download/details.aspx?id=54920
Поставилось успешно, но ошибка так и осталась...как мне узнать нужное имя провайдера и если чего-то не хватает для экспорта - доустановить ? =)
по ссылке - 2-е "штуки"
- AccessDatabaseEngine.exe
- AccessDatabaseEngine_X64.exe

Ставить нужно "вторую".
Но если уже есть установленная "первая", - её нужно будет сначала деинсталлировать
1 мар 19, 10:36    [21822472]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
court
Ставить нужно "вторую".
Но если уже есть установленная "первая", - её нужно будет сначала деинсталлировать

Можно поставить и обе, just-in-case, но возможны проблемы.
https://datasavvy.me/2017/07/20/installing-the-microsoft-ace-oledb-12-0-provider-for-both-64-bit-and-32-bit-processing/
1 мар 19, 10:59    [21822491]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30764
court
- AccessDatabaseEngine.exe
- AccessDatabaseEngine_X64.exe

Ставить нужно "вторую".
Как я понял, Аленочка пыталась поставить вторую, но случилось ошибка, о которой она не говорит.
С этим надо разбираться.
1 мар 19, 11:05    [21822496]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
court
Member

Откуда:
Сообщений: 1956
alexeyvg
court
- AccessDatabaseEngine.exe
- AccessDatabaseEngine_X64.exe

Ставить нужно "вторую".
Как я понял, Аленочка пыталась поставить вторую, но случилось ошибка, о которой она не говорит.
С этим надо разбираться.
Так как она пишет, что что-то по ссылке поставила (но не 64б, раз нет в списке возвращаемом xp_enum_oledb_providers), то скорее всего эту ошибку:

Картинка с другого сайта.
1 мар 19, 11:09    [21822499]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка результата запроса в Excel. The OLE DB provider has not been registered.  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3459
alexeyvg
alexeyvg
Вроде есть способ сразу получить список, но что то не вспоминается.
exec master.dbo.xp_enum_oledb_providers


PoweShell
>(New-Object system.data.oledb.oledbenumerator).GetElements()
1 мар 19, 11:38    [21822528]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить