CREATE REMOTE SERVICE BINDING (Transact-SQL)
Cria uma associação que define as credenciais de segurança a serem usadas para iniciar uma conversação com um serviço remoto.
Sintaxe
CREATE REMOTE SERVICE BINDING binding_name
[ AUTHORIZATION owner_name ]
TO SERVICE 'service_name'
WITH USER = user_name [ , ANONYMOUS = { ON | OFF } ]
[ ; ]
Argumentos
binding_name
É o nome da associação de serviço remoto a ser criada. Os nomes de servidor, banco de dados e esquema não podem ser especificados. O binding_name deve ser um sysname válido.AUTHORIZATION owner_name
Define o proprietário da associação à função ou ao usuário de banco de dados especificado. Quando o usuário atual for dbo ou sa, owner_name poderá ser o nome de qualquer usuário ou função válida. Caso contrário, owner_name deverá ser o nome do usuário atual, o nome de um usuário para o qual o usuário atual tenha permissões IMPERSONATE ou o nome de uma função à qual o usuário atual pertença.TO SERVICE 'service_name'
Especifica o serviço remoto a ser associado ao usuário identificado na cláusula WITH USER.USER = user_name
Especifica a entidade de banco de dados proprietária do certificado associado ao serviço remoto identificado pela cláusula TO SERVICE. Esse certificado é usado para criptografia e autenticação de mensagens trocadas com o serviço remoto.ANONYMOUS
Especifica se a autenticação anônima é usada durante a comunicação com o serviço remoto. Se ANONYMOUS = ON, a autenticação anônima será usada e as operações no banco de dados remoto ocorrerão como um membro da função de banco de dados fixa public. Se ANONYMOUS = OFF, as operações no banco de dados remoto ocorrerão como um usuário específico nesse banco de dados. Se essa cláusula não for especificada, o padrão será OFF. Segurança de diálogo do Agente de Serviços descreve como a segurança de diálogo do SQL Server mapeia associações de serviço remoto para entidades.
Comentários
O Service Broker usa uma associação de serviço remoto para localizar o certificado a ser usado para uma nova conversação. A chave pública no certificado associado a user_name é usada para autenticar as mensagens enviadas ao serviço remoto e para criptografar uma chave de sessão que, em seguida, é usada para criptografar a conversação. O certificado para user_name deve corresponder ao certificado para um usuário no banco de dados que hospeda o serviço remoto.
A associação de serviço remoto é necessária apenas para serviços iniciadores que se comunicam com serviços de destino fora da instância do SQL Server. Um banco de dados que hospeda um serviço iniciador deve conter associações de serviço remoto para quaisquer serviços de destino fora da instância do SQL Server. Um banco de dados que hospeda um serviço de destino deve conter associações de serviço remoto para os serviços iniciadores que se comunicam com o serviço de destino. Quando os serviços iniciador e de destino estão na mesma instância do SQL Server, nenhuma associação de serviço remoto é necessária. Entretanto, se uma associação de serviço remoto estiver presente onde o service_name especificado para TO SERVICE corresponde ao nome do serviço local, o Service Broker usará a associação.
Quando ANONYMOUS = ON, o serviço iniciador se conecta ao serviço de destino como membro da função de banco de dados fixa public. Por padrão, os membros dessa função não têm permissão para conectar-se a um banco de dados. Para enviar uma mensagem com êxito, o banco de dados de destino deve conceder à função public a permissão CONNECT para o banco de dados e a permissão SEND para o serviço de destino.
Quando um usuário possui mais de um certificado, o Service Broker seleciona o certificado com a data de validade mais recente dentre os que estão válidos e marcados como AVAILABLE FOR BEGIN_DIALOG.
Permissões
Por padrão, as permissões para criar uma associação de serviço remoto correspondem ao usuário nomeado na cláusula USER, membros da função de banco de dados fixa db_owner, membros da função de banco de dados fixa db_ddladmin e membros da função de servidor fixa sysadmin.
O usuário que executa a instrução CREATE REMOTE SERVICE BINDING deve ter a permissão de representação para a entidade especificada na instrução.
Uma associação de serviço remoto pode não ser um objeto temporário. São permitidos nomes de associação de serviço remoto começando com #, mas são objetos permanentes.
Exemplos
A. Criando uma associação de serviço remoto
O exemplo a seguir cria uma associação para o serviço //Adventure-Works.com/services/AccountsPayable. O Service Broker utiliza o certificado de propriedade da entidade de banco de dados APUser para se autenticar no serviço remoto e trocar a chave de criptografia da sessão com o serviço remoto.
CREATE REMOTE SERVICE BINDING APBinding
TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
WITH USER = APUser ;
B. Criando uma associação de serviço remoto que usa autenticação anônima
O exemplo a seguir cria uma associação para o serviço //Adventure-Works.com/services/AccountsPayable. O Service Broker utiliza o certificado de propriedade da entidade de banco de dados APUser para trocar a chave de criptografia da sessão com o serviço remoto. O agente não faz autenticação no serviço remoto. No banco de dados que hospeda o serviço remoto, as mensagens são entregues como usuário guest (convidado).
CREATE REMOTE SERVICE BINDING APBinding
TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
WITH USER = APUser, ANONYMOUS=ON ;