Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не работает Linked Server после переподключения с обновленным провайдером / 3 сообщений из 3, страница 1 из 1
21.01.2019, 15:03
    #39762409
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает Linked Server после переподключения с обновленным провайдером
Есть связанный сервер с именем LNKEXCEL, источником данных в котором служит таблица Excel 2016. Я периодически обновляю в ней данные для дальнейшего импорта в таблицу MS SQL 2000 запросом:
Код: sql
1.
2.
DELETE FROM [RC_Data]
INSERT INTO [RC_Data] SELECT * FROM OPENQUERY(LNKEXCEL,'SELECT * FROM [RC_Data_Result$]')



Все работало нормально, пока сисадмины не установили мне MS Visio 2016. Я стал получать ошибку на этот запрос:
Код: plaintext
1.
2.
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) и вижу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 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 оставил прежним. Вот, что получилось.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
/****** 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 не удалял ), но при выполнении запроса
Код: sql
1.
2.
DELETE FROM [RC_Data]
INSERT INTO [RC_Data] SELECT * FROM OPENQUERY(LNKEXCELNEW,'SELECT * FROM [RC_Data_Result$]')



получаю:
Код: plaintext
1.
2.
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'.
Что делать?
...
Рейтинг: 0 / 0
21.01.2019, 16:26
    #39762445
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает Linked Server после переподключения с обновленным провайдером
Malyav,

как-то надо вернуть 12 версию.
...
Рейтинг: 0 / 0
22.01.2019, 08:09
    #39762632
Malyav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает Linked Server после переподключения с обновленным провайдером
Владислав Колосов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 вновь проходит нормально.
Всем спасибо :-)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не работает Linked Server после переподключения с обновленным провайдером / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]