Связанный сервер SQL Server 2014 с SQL Server версии 8

Недавно я установил SQL Server 2014 Express, и мне нужно создать связанный сервер. Я пробовал это в SQL Server Management Studio (из object explorer - server objects - linked servers - add linked server).

При подключении к серверу напрямую через тип сервера «SQL-сервер» или путем указания атрибутов подключения в «Другой источник данных», затем Microsoft OLE DB Provider для SQL Server и заполнения дополнительных сведений я получаю следующую ошибку.

Связанный сервер был создан, но не прошел тест подключения. Собственный клиент SQL Server 11.0 не поддерживает соединения с SQL Server 2000 или более ранними версиями.

Мне нужно создать объединенный запрос между двумя базами данных на разных серверах, как лучше всего это сделать? База данных, к которой мне нужно подключиться, — это версия 8 (SQL Server 2000), очень старая. Я читал, что это возможно сделать с помощью транзакционного SQL, но не уверен, какие шаги предпринять.


person Emma    schedule 23.07.2015    source источник
comment
Ошибка четко говорит: SQL Server 2000 (v8) больше не поддерживается — вы не можете восстановить резервную копию из SQL Server 2000, и вы больше не может создать связанный сервер с экземпляром SQL Server 2000.   -  person marc_s    schedule 23.07.2015
comment
Ошибка исходит от клиента, а не от сервера. Установите старый клиент SQL Server на свой компьютер и используйте его для подключения. Вы можете установить несколько версий клиента SQL Server одновременно. Я ожидаю, что 2008 или 2008 R2 будет поддерживать 2000.   -  person Panagiotis Kanavos    schedule 23.07.2015
comment
Или восстановите базу данных до более новой версии, которая все еще поддерживает 2000, затем сделайте резервную копию и восстановите ее до 2014 года.   -  person Panagiotis Kanavos    schedule 23.07.2015
comment
Привет, мне удалось связать таблицу, используя обходной путь здесь sqlwithmanoj.com/2012/12/10/ — Как теперь получить данные из этой ссылки в представление другой базы данных?   -  person Emma    schedule 23.07.2015


Ответы (1)


Можно создать связанный сервер, но это невозможно сделать через графический интерфейс. В качестве обходного пути вы можете создать DSN для использования в транзакционном SQL для связи серверов.

Подробные инструкции см. на странице http://sqlwithmanoj.com/2012/12/10/sql-server-2012-does-not-support-linked-server-to-sql-server-2000-workaround/

=> ВРЕМЕННОЕ РЕШЕНИЕ / ИСПРАВЛЕНИЕ:

Теперь в качестве обходного пути, чтобы заставить этот связанный сервер работать, у нас есть возможность использовать источник данных ODBC, который будет подключаться к нашему удаленному серверу. Существует 2 подхода: 1. Либо мы создаем источник данных ODBC (DSN) и используем его на нашем связанном сервере 2. Или используем строку подключения источника данных (DSN) непосредственно в Linker Server Provider.

–> Использование подхода №1:

Создайте источник данных ODBC: – Откройте панель управления, выберите «Администрирование», затем «Источники данных (ODBC)». – В окне «Администратор источника данных ODBC» перейдите на вкладку «Системный DSN». – Здесь нажмите «Добавить», чтобы создать новый DSN. – Выберите «SQL Server» и нажмите «Готово». - В новом окне укажите правильное имя для исходного DSN (например, NorthWind2000DSN), мы будем использовать это имя при создании нашего связанного сервера. Укажите имя сервера SQL Server 2000, здесь «NorthWind». Нажмите кнопку "Далее. – Выберите тип аутентификации: аутентификация Windows или SQL Server. Нажмите кнопку "Далее. – Изменить базу данных по умолчанию, не обязательно. Нажмите кнопку "Далее. – Нажмите Готово. Вы увидите новый DSN, созданный на вкладке System DSN.

Теперь создайте связанный сервер и укажите этот DSN в параметре @datasrc и укажите параметр @provider «MSDASQL». Вы можете использовать следующий запрос, чтобы создать то же самое:

USE master
GO
-- Drop Existing LinkedServer [NorthWind2000]:
EXEC sp_dropserver @server=N'NorthWind2000', @droplogins='droplogins'
GO

-- Re-create LinkedServer [NorthWind2000] by using the ODBC connection:
EXEC sp_addlinkedserver @server = N'NorthWind2000', 
                    @srvproduct=N'MSDASQL', 
                    @provider=N'MSDASQL', 
                    @datasrc = N'NorthWind2000DSN', 
                    @location=N'System';

EXEC sp_addlinkedsrvlogin @rmtsrvname=N'NorthWind2000', 
                      @useself=N'True', 
                      @locallogin=NULL, 
                      @rmtuser=NULL, 
                      @rmtpassword=NULL
GO

–> Использование подхода № 2:

Мы также можем напрямую поместить строку подключения DSN в параметр Provider String @provstr. Давайте проверим это ниже:

USE master
GO
-- Drop Existing LinkedServer [NorthWind2000]:
EXEC sp_dropserver @server=N'NorthWind2000', @droplogins='droplogins'
GO
-- Re-create LinkedServer [NorthWind2000] by using the ODBC connection:
EXEC sp_addlinkedserver @server = N'NorthWind2000', 
                    @srvproduct=N'', 
                    @provider=N'MSDASQL', 
                    @provstr=N'DRIVER={SQLServer};SERVER=NorthWind;Trusted_Connection=yes;'

EXEC sp_addlinkedsrvlogin @rmtsrvname=N'NorthWind2000', 
                      @useself=N'True', 
                      @locallogin=NULL, 
                      @rmtuser=NULL, 
                      @rmtpassword=NULL
GO
person Emma    schedule 24.07.2015