CREATE REMOTE SERVICE BINDING (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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 описано, как безопасность диалогов SQL Server соотносится с привязками удаленных служб к участникам.

Замечания

Компонент 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 ;