CREATE REMOTE SERVICE BINDING (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

CREATE REMOTE SERVICE BINDING binding_name 
   [ AUTHORIZATION owner_name ] 
   TO SERVICE 'service_name' 
   WITH  USER = user_name [ , ANONYMOUS = { ON | OFF } ]
[ ; ]

Аргументы

  • binding_name
    Имя создаваемой привязки удаленной службы. Не могут быть указаны имена сервера, базы данных и схемы. Аргумент binding_name должен быть допустимым sysname.

  • AUTHORIZATION owner_name
    Назначает владельцем привязки указанного пользователя или роль базы данных. Если текущим пользователем является dbo или sa, то параметр owner_name может быть именем любого допустимого пользователя или роли. В противном случае аргумент owner_name должен быть именем текущего пользователя, именем пользователя, на которого у текущего пользователя есть разрешения IMPERSONATE, или именем роли, которой принадлежит текущий пользователь.

  • TO SERVICE 'service_name'
    Указывает удаленную службу, которую необходимо привязать к пользователю, указанному в предложении WITH USER.

  • USER = user_name
    Указывает участника базы данных, владеющего сертификатом, который связан с удаленной службой, указываемой предложением TO SERVICE. Этот сертификат применяется для шифрования и проверки подлинности сообщений, обмен которыми производится с удаленной службой.

  • ANONYMOUS
    Указывает, используется ли анонимная проверка подлинности при связи с удаленной службой. Если ANONYMOUS = ON, используется анонимная проверка подлинности, и все операции в удаленной базе данных выполняются от имени члена предопределенной роли базы данных public. Если ANONYMOUS = OFF, операции в удаленной базе данных выполняются от имени определенного пользователя этой базы данных. Если это выражение не задано, по умолчанию параметр принимает значение OFF.

Замечания

Компонент Компонент Service Broker использует привязку удаленной службы для поиска сертификата, который будет применяться при создании новых диалогов. Содержащийся в сертификате открытый ключ, связанный с пользователем user_name, предназначен для проверки подлинности сообщений, передаваемых удаленной службе, а также для шифрования сеансового ключа, который, в свою очередь, будет использован для шифрования диалога. В базе данных, на которой находится удаленная служба, должен иметься сертификат, соответствующий сертификату пользователя user_name.

Привязка удаленной службы необходима только для служб вызывающей стороны, которые взаимодействуют с конечными службами за пределами экземпляра SQL Server. База данных, в которой находится служба вызывающей стороны, должна содержать привязки удаленных служб для всех целевых служб за пределами экземпляра SQL Server. Базе данных, на которой находится конечная служба, нет необходимости хранить привязки для всех служб вызывающей стороны, которые с ней взаимодействуют. Если инициатор и целевая служба находятся на одном и том же экземпляре SQL Server, привязки удаленной службы не нужны. Однако если привязка удаленной службы существует в случае, когда для параметра TO SERVICE было указано имя service_name, совпадающее с именем локальной службы, то компонент Компонент Service Broker использует эту привязку.

Если ANONYMOUS = ON, служба вызывающей стороны подключается к конечной службе как член предопределенной роли базы данных public. По умолчанию члены этой роли не имеют разрешения на подключение к базе данных. Для успешной отправки сообщения целевая база данных должна предоставить роли public разрешение CONNECT на базу данных и разрешение SEND на конечную службу.

Если пользователю принадлежит более одного сертификата, компонент Компонент Service Broker выбирает из действующих и помеченных как AVAILABLE FOR BEGIN_DIALOG сертификатов тот, который имеет больший срок действия.

Разрешения

Разрешения для создания привязки удаленной службы по умолчанию даются пользователю, имя которого указано в предложении USER, членам предопределенных ролей базы данных db_owner, db_ddladmin и членам предопределенной роли сервера sysadmin.

Пользователь, выполняющий инструкцию CREATE REMOTE SERVICE BINDING, должен иметь разрешение на олицетворение указанного в инструкции участника.

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

Примеры

А.Создание привязки удаленной службы

В следующем примере создается привязка к службе //Adventure-Works.com/services/AccountsPayable. КомпонентКомпонент Service Broker использует сертификат, принадлежащий участнику базы данных APUser, для проверки подлинности удаленной службы и обмена с ней ключами сеанса.

CREATE REMOTE SERVICE BINDING APBinding
    TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
    WITH USER = APUser ;

Б.Создание привязки удаленной службы при использовании анонимной проверки подлинности

В следующем примере создается привязка к службе //Adventure-Works.com/services/AccountsPayable. Компонент Компонент Service Broker использует сертификат, принадлежащий участнику базы данных APUser, для обмена с удаленной службой ключами сеанса. Проверка подлинности при доступе к удаленной службе не производится. В базе данных, в которой находится удаленная служба, сообщения доставляются от имени пользователя guest.

CREATE REMOTE SERVICE BINDING APBinding
    TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
    WITH USER = APUser, ANONYMOUS=ON ;

См. также

Справочник

ALTER REMOTE SERVICE BINDING (Transact-SQL)

DROP REMOTE SERVICE BINDING (Transact-SQL)

EVENTDATA (Transact-SQL)