CREATE REMOTE SERVICE BINDING (Transact-SQL)
Область применения: SQL Server
Создает привязку, определяющую учетные данные безопасности, которые используются при создании диалога с удаленной службой.
Соглашения о синтаксисе 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, привязка удаленной службы не требуется. Однако если привязка удаленной службы присутствует, в которой service_name , указанной для TO SERVICE, соответствует имени локальной службы, Service Broker будет использовать привязку.
Если ANONYMOUS = ON, служба вызывающей стороны подключается к конечной службе как член предопределенной роли базы данных public. По умолчанию члены этой роли не имеют разрешения на подключение к базе данных. Для успешной отправки сообщения целевая база данных должна предоставить роли public разрешение CONNECT для базы данных и разрешение SEND для конечной службы.
Если пользователь владеет несколькими сертификатами, Компонент Service Broker выбирает сертификат с последней датой окончания срока действия из сертификатов, которые в настоящее время действительны и помечены как ДОСТУПНЫЕ ДЛЯ 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 ;
B. Создание привязки удаленной службы при использовании анонимной проверки подлинности
В следующем примере создается привязка к службе //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)