Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Malyav Member Откуда: Сообщений: 183 |
Есть связанный сервер с именем LNKEXCEL, источником данных в котором служит таблица Excel 2016. Я периодически обновляю в ней данные для дальнейшего импорта в таблицу MS SQL 2000 запросом:DELETE FROM [RC_Data] INSERT INTO [RC_Data] SELECT * FROM OPENQUERY(LNKEXCEL,'SELECT * FROM [RC_Data_Result$]') Все работало нормально, пока сисадмины не установили мне MS Visio 2016. Я стал получать ошибку на этот запрос: OLE DB error trace [Non-interface error: Provider not registered.]. Я посмотрел установленные провайдеры (exec master.dbo.xp_enum_oledb_providers) и вижу: Provider Name Provider Description Попробовал пересоздать подключенный сервер через "Создать сценарий" --> Create, поменяв в сгенерированном скрипте цифру 12 на 15 в @provider и @provstr, а LNKEXCEL на LNKEXCELNEW. Файл-источник Excel оставил прежним. Вот, что получилось. /****** Object: LinkedServer [LNKEXCELNEW] Script Date: 01/21/2019 16:02:02 ******/ EXEC master.dbo.sp_addlinkedserver @server = N'LNKEXCELNEW', @srvproduct=N'ExcelTable', @provider=N'Microsoft.ACE.OLEDB.15.0', @datasrc=N'C:\Work\Filename.xlsm', @provstr=N'Excel 15.0 Macro' /* For security reasons the linked server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LNKEXCELNEW',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'collation compatible', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'data access', @optvalue=N'true' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'dist', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'pub', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'rpc', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'rpc out', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'sub', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'connect timeout', @optvalue=N'0' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'collation name', @optvalue=null GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'lazy schema validation', @optvalue=N'false' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'query timeout', @optvalue=N'0' GO EXEC master.dbo.sp_serveroption @server=N'LNKEXCELNEW', @optname=N'use remote collation', @optvalue=N'true' GO Подключенный сервер LNKEXCELNEW создается (старый LNKEXCEL не удалял ), но при выполнении запроса DELETE FROM [RC_Data] INSERT INTO [RC_Data] SELECT * FROM OPENQUERY(LNKEXCELNEW,'SELECT * FROM [RC_Data_Result$]') получаю: OLE DB error trace [OLE/DB Provider 'Microsoft.ACE.OLEDB.15.0' IDBInitialize::Initialize returned 0x80004005: The provider did not give any information about the error.]. Аналогичная картина и для 'Microsoft.ACE.OLEDB.16.0'. Что делать? |
21 янв 19, 15:03 [21790321] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Malyav, как-то надо вернуть 12 версию. |
21 янв 19, 16:26 [21790406] Ответить | Цитировать Сообщить модератору |
Malyav Member Откуда: Сообщений: 183 |
Это то, с чего я вчера начал восстановление работоспособности. Скачал дистрибутив с https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255 и попытался его установить. Окно установки висело на экране несколько секунд, потом пропадало и на этом все заканчивалось. Тогда я попытался пересоздать линкед сервер с теми провайдерами (15 и 16), что у меня были. Не получилось (см выше). Сегодня опять начал рыть в сторону 12-й версии. Запрос в яндекс "можно ли установить OLEDB 12 если установлена 15 или 16" вывел меня на http://qaru.site/questions/27530/microsoftaceoledb120-provider-is-not-registered-on-the-local-machine где советовали установить AccessDatabaseEngine но не для 2010, а для 2007 г. https://www.microsoft.com/en-us/download/confirmation.aspx?id=23734 Установка этого дистрибутива прошла нормально, в системе появился Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider После этого импорт из старого LNKEXCEL вновь проходит нормально. Всем спасибо :-) |
||
22 янв 19, 08:09 [21790768] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |