Создание связанных серверов (компонент SQL Server Database Engine)

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

В этом разделе

  • Перед началом работы выполните следующие действия.

    Пояснения

    Безопасность

  • Примеры.

    Среда SQL Server Management Studio

    Transact-SQL

  • Дополнительная работа. Действия, выполняемые после создания связанного сервера

Пояснения

Связанные серверы позволяют выполнять распределенные разнородные запросы к источникам данных OLE DB. После создания связанного сервера можно выполнять распределенные запросы к этому серверу, причем в запросах могут соединять таблицы из нескольких источников данных. Если связанный сервер определен в качестве экземпляра SQL Server, на нем могут выполняться удаленные хранимые процедуры.

Возможности связанного сервера и необходимые аргументы могут сильно различаться. В примерах из этого раздела представлены типичные ситуации, но описаны не все параметры. Дополнительные сведения см. в разделе sp_addlinkedserver (Transact-SQL).

Безопасность

Разрешения

Необходимо разрешение ALTER ANY LINKED SERVER на сервере.

[В начало]

Создание связанного сервера

Можно использовать следующие параметры.

  • Среда SQL Server Management Studio

  • Transact-SQL

Использование среды SQL Server Management Studio

Создание связанного сервера для другого экземпляра SQL Server в среде SQL Server Management Studio

  1. В среде Среда SQL Server Management Studio откройте обозреватель объектов, разверните узел Объекты сервера, щелкните правой кнопкой мыши узел Связанные серверы и выберите команду Создать связанный сервер.

  2. На странице Общие в поле Связанный сервер введите имя экземпляра SQL Server, с которым связывается область.

    ПримечаниеПримечание

    Если экземпляр SQL Server является экземпляром по умолчанию, введите имя компьютера, на котором размещается экземпляр SQL Server. Если экземпляр SQL Server является именованным, введите имя компьютера и имя экземпляра, например Accounting\SQLExpress.

  3. В области Тип сервера выберите SQL Server, чтобы показать, что связанные сервер является другим экземпляром SQL Server.

  4. На странице Безопасность укажите контекст безопасности, который будет использоваться при подключении исходного экземпляра SQL Server к связанному серверу. В среде с доменами, где пользователи соединяются с именами входа домена, лучшим вариантом часто оказывается Выполнять с использованием текущего контекста безопасности имени входа. Если пользователи подключаются к исходному экземпляру SQL Server с помощью имени входа SQL Server, лучшим вариантом часто оказывается С использованием этого контекста безопасности с последующим указанием необходимых учетных данных для проверки подлинности на связанном сервере.

  5. Нажмите кнопку ОК.

[В начало]

Использование Transact-SQL

Чтобы создать связанный сервер с помощью Transact-SQL, используйте инструкции sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL) и sp_addlinkedsrvlogin (Transact-SQL).

Создание связанного сервера для другого экземпляра SQL Server с помощью Transact-SQL

  1. В редакторе запросов введите следующую команду Transact-SQL, чтобы установить связь с экземпляром SQL Server с именем SRVR002\ACCTG:

    USE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver 
        @server = N'SRVR002\ACCTG', 
        @srvproduct=N'SQL Server' ;
    GO
    
  2. Выполните следующий код, чтобы настроить связанный сервер для использования учетных данных домена для имени входа, которое использует связанный сервер.

    EXEC master.dbo.sp_addlinkedsrvlogin 
        @rmtsrvname = N'SRVR002\ACCTG', 
        @locallogin = NULL , 
        @useself = N'True' ;
    GO
    

[В начало]

Дополнительная работа. Действия, выполняемые после создания связанного сервера

Проверка связанного сервера

  • Выполните следующий код, чтобы проверить соединение со связанным сервером. Этот пример возвращает имена баз данных на связанном сервере.

    SELECT name FROM [SRVR002\ACCTG].master.sys.sysdatabases ;
    GO
    

Создание запроса, соединяющего таблицы со связанного сервера

  • Для ссылки на объект, расположенный на связанном сервере, используйте четырехкомпонентные имена. Выполните следующий код, чтобы получить список всех имен входа на локальном сервере и соответствующих имен входа на связанном сервере.

    SELECT local.name AS LocalLogins, linked.name AS LinkedLogins
    FROM master.sys.server_principals AS local
    LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
        ON local.name = linked.name ;
    GO
    

    Если для имени входа связанного сервера возвращается значение NULL, это значит, что имя входа не существует на связанном сервере. Такие имена входа не смогут использовать связанный сервер, если на нем не настроена передача другого контекста безопасности и он не принимает анонимные подключения.

[В начало]