Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает Linked Server после переподключения с обновленным провайдером  [new]
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.].
Сообщение 7403, уровень 16, состояние 1, строка 1
Could not locate registry entry for OLE DB provider 'Microsoft.ACE.OLEDB.12.0'.

Я посмотрел установленные провайдеры (exec master.dbo.xp_enum_oledb_providers) и вижу:
Provider Name	Provider Description
SQLOLEDB Microsoft OLE DB Provider for SQL Server
DTSPackageDSO Microsoft OLE DB Provider for DTS Packages
SQLReplication.OLEDB SQL Server Replication OLE DB Provider for DTS
MSDMine Microsoft OLE DB Provider For Data Mining Services
MSOLAP Microsoft OLE DB Provider for Analysis Services 11.0
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Microsoft.ACE.OLEDB.16.0 Microsoft Office 16.0 Access Database Engine OLE DB Provider
EMPOLEDBVS71.1 VSEE Versioning Enlistment Manager Proxy Data Source
ADsDSOObject OLE DB Provider for Microsoft Directory Services
SQLNCLI10 SQL Server Native Client 10.0
Search.CollatorDSO.1 Microsoft OLE DB Provider for Search
MSOLAP Microsoft OLE DB Provider for OLAP Services 8.0
MSDASQL Microsoft OLE DB Provider for ODBC Drivers
Microsoft.Jet.OLEDB.4.0 Microsoft Jet 4.0 OLE DB Provider
MSDAOSP Microsoft OLE DB Simple Provider
MSDAORA Microsoft OLE DB Provider for Oracle
MSIDXS Microsoft OLE DB Provider for Indexing Service

Попробовал пересоздать подключенный сервер через "Создать сценарий" --> 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.].
Сообщение 7399, уровень 16, состояние 1, строка 2
OLE DB provider 'Microsoft.ACE.OLEDB.15.0' reported an error. The provider did not give any information about the error.

Аналогичная картина и для 'Microsoft.ACE.OLEDB.16.0'.
Что делать?
21 янв 19, 15:03    [21790321]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Linked Server после переподключения с обновленным провайдером  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7752
Malyav,

как-то надо вернуть 12 версию.
21 янв 19, 16:26    [21790406]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Linked Server после переподключения с обновленным провайдером  [new]
Malyav
Member

Откуда:
Сообщений: 183
Владислав Колосов
Malyav,
как-то надо вернуть 12 версию.


Это то, с чего я вчера начал восстановление работоспособности. Скачал дистрибутив с 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 Ответить