Поделиться через


Создание связанных серверов (ядро СУБД SQL Server)

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

Предыстория

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

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

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

Разрешения

При использовании инструкций Transact-SQL требуется ALTER ANY LINKED SERVER разрешение на сервере или членство в фиксированной роли сервера setupadmin. При использовании Management Studio требуется CONTROL SERVER разрешение или членство в предопределенных ролях сервера sysadmin .

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

Вы можете использовать любой из следующих вариантов:

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

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

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

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

    Другой источник данных
    Укажите тип сервера OLE DB, отличный от SQL Server. Включение этой функции активирует дополнительные параметры, расположенные под ней.

    Поставщик
    Выберите источник данных OLE DB в окне списка. Поставщик OLE DB зарегистрирован в реестре с данным идентификатором PROGID.

    Наименование продукта:
    Введите название продукта для источника данных OLE DB, который добавляется в качестве связанного сервера.

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

    Строка поставщика
    Введите уникальный программный идентификатор (PROGID) поставщика OLE DB, соответствующий источнику данных. Примеры допустимых строк поставщика можно найти в статье sp_addlinkedserver (Transact-SQL).

    Местоположение
    Введите местонахождение базы данных, понятное поставщику OLE DB.

    Каталог
    Введите имя каталога, который следует использовать при соединении с поставщиком OLE DB.

    Чтобы проверить возможность подключения к связанному серверу, в обозревателе объектов щелкните правой кнопкой мыши связанный сервер и нажмите кнопку "Проверить подключение".

    Замечание

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

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

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

    Локальное имя входа
    Указывает локальное имя входа, с помощью которого может осуществляться соединение со связанным сервером. Локальное имя входа может быть именем входа с помощью проверки подлинности SQL Server или имени входа проверки подлинности Windows. Используйте этот список для разрешения соединений только определенным именам входа или для разрешения некоторым именам входа подключаться в качестве другого имени входа.

    Выдавать себя за
    Передайте имя пользователя и пароль из локальной учётной записи на связанный сервер. Для проверки подлинности SQL Server имя входа с таким же именем и паролем должно существовать на удаленном сервере. Для входа в систему Windows учетная запись должна быть действительной на связанном сервере.

    Чтобы использовать имперсонацию, конфигурация должна соответствовать требованиям делегирования.

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

    Удаленный пароль
    Указывает пароль удаленного пользователя.

    Прибавить
    Добавьте новое локальное имя входа.

    Удалить
    Удалите существующее локальное имя входа.

    Не должно быть сделано
    Укажите, что подключение не будет сделано для имен входа, не определенных в списке.

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

    Осуществляется с использованием текущего контекста безопасности логина
    Укажите, что подключение будет выполнено с использованием текущих параметров безопасности для логинов, которых нет в списке. При подключении к локальному серверу с помощью проверки подлинности Windows учетные данные Windows будут использоваться для подключения к удаленному серверу. При подключении к локальному серверу с помощью проверки подлинности SQL Server имя входа и пароль будут использоваться для подключения к удаленному серверу. В этом случае учетная запись с тем же именем и паролем должна существовать на удаленном сервере.

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

  5. При необходимости, чтобы просмотреть или указать параметры сервера, щелкните страницу "Параметры сервера ".

    Совместимые параметры сортировки
    Влияет на выполнение распределенных запросов на связанных серверах. Если этот параметр имеет значение true, SQL Server предполагает, что все символы в связанном сервере совместимы с локальным сервером, что касается последовательности набора символов и сортировки (или порядка сортировки). Это позволяет SQL Server отправлять сравнения по символьным столбцам поставщику. Если этот параметр не задан, SQL Server всегда вычисляет сравнения по столбцам символов локально.

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

    Доступ к данным
    Разрешает и запрещает доступ распределенных запросов к связанному серверу.

    RPC
    Включает RPC с указанного сервера.

    RPC Out
    Включает RPC на указанный сервер.

    Использовать удаленную сортировку
    Определяет, будет ли использоваться сопоставление удаленного столбца или локального сервера.

    Если задано значение true, параметры сортировки удаленных столбцов используются для источников данных SQL Server, а параметры сортировки, указанные в имени сортировки, используются для источников данных, отличных от SQL Server.

    Если значение равно false, при распределенных запросах всегда будет использоваться стандартная сортировка на локальном сервере, в то время как имя сортировки и сортировка удаленных столбцов будут игнорироваться. Значение по умолчанию — false.

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

    Используйте этот параметр при доступе к источнику данных OLE DB, отличному от SQL Server, но параметры сортировки которого соответствуют одному из параметров сортировки SQL Server.

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

    Время ожидания соединения
    Значение времени ожидания в секундах для подключения к связанному серверу.

    Если значение 0, используйте значение параметра времени ожидания удаленного входа по умолчанию sp_configure.

    Время ожидания запроса
    Значение времени ожидания для запросов к связанному серверу, в секундах.

    Если значение равно 0, используйте значение параметра sp_configure по умолчанию для времени ожидания удаленного запроса.

    Разрешить продвижение распределенных транзакций
    Используйте этот параметр для защиты действий процедуры между серверами с помощью транзакции координатора распределенных транзакций (MS DTC). Если этот параметр имеет значение TRUE, то вызов удаленной хранимой процедуры приводит к запуску распределенной транзакции и регистрирует транзакцию в MS DTC. Дополнительные сведения см. в разделе sp_serveroption (Transact-SQL).

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

Просмотр вариантов поставщика
  • Чтобы просмотреть параметры, предоставляемые поставщиком, щелкните страницу "Параметры поставщиков ".

    У всех поставщиков нет одинаковых параметров. Например, некоторые типы данных могут быть индексированы, а некоторые нет. Используйте это диалоговое окно, чтобы помочь SQL Server понять возможности поставщика. SQL Server устанавливает некоторые распространенные поставщики данных, однако, когда продукт, предоставляющий данные, изменяется, поставщик, установленный SQL Server, может не поддерживать все новейшие функции. Лучшим источником сведений о возможностях продукта, поставляющего данные, является документация по продукту.

    Динамический параметр
    Указывает, что поставщик разрешает использовать синтаксис маркеров параметров «?» для параметризованных запросов. Установите этот параметр только в том случае, если поставщик поддерживает интерфейс ICommandWithParameters и символ «?» в качестве маркера параметров. Этот параметр позволяет SQL Server выполнять параметризованные запросы к поставщику. Возможность выполнять параметризованные запросы к поставщику может повысить производительность некоторых запросов.

    Вложенные запросы
    Указывает, что поставщик разрешает вложенные инструкции SELECT в предложении FROM. Этот параметр позволяет SQL Server делегировать определенные запросы поставщику, требующим вложенных инструкций SELECT в предложении FROM.

    Только нулевой уровень
    Для поставщика вызываются только интерфейсы OLE DB уровня 0.

    Разрешить внутри процесса
    SQL Server позволяет поставщику инициализировать работу в серверном процессе. Если этот параметр не задан, поведение по умолчанию заключается в создании экземпляра поставщика за пределами процесса SQL Server. Создание экземпляра провайдера вне процесса SQL Server защищает его от ошибок в провайдере. Если поставщик создается за пределами процесса SQL Server, обновления или вставки, ссылающиеся на длинные столбцы (textилиntextimage) не допускаются.

    Обновления без использования транзакций
    SQL Server разрешает обновления, даже если ITransactionLocal недоступен. Если этот параметр включен, обновления для поставщика не восстанавливаются, так как поставщик не поддерживает транзакции.

    Индекс в качестве пути доступа
    SQL Server пытается использовать индексы поставщика для получения данных. По умолчанию индексы используются только для метаданных и никогда не открываются.

    Запретить нерегламентированный доступ
    SQL Server не разрешает разовый доступ через функции OPENROWSET и OPENDATASOURCE для поставщика OLE DB. Если этот параметр не задан, SQL Server также не разрешает нерегламентированный доступ.

    Поддерживает оператор 'Like'
    Указывает, что поставщик поддерживает запросы с использованием ключевого слова LIKE.

Использование 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.databases ;  
    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 возвращается для имени входа связанного сервера, оно указывает, что имя входа не существует на связанном сервере. Эти учетные записи не смогут использовать связанный сервер, если тот не настроен на передачу другого контекста безопасности или не принимает анонимные подключения.

См. также

Связанные серверы (ядро СУБД)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)