CREATE REMOTE SERVICE BINDING (Transact-SQL)

Si applica a:SQL Server

Crea un'associazione che definisce le credenziali di sicurezza da utilizzare per avviare una conversazione con un servizio remoto.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

binding_name
Nome dell'associazione al servizio remoto da creare. Non è possibile specificare i nomi del server, del database e dello schema. binding_name deve essere un valore sysnamevalido.

AUTHORIZATION owner_name
Imposta come proprietario dell'associazione l'utente o il ruolo del database specificato. Se l'utente corrente è dbo o sa, owner_name può essere il nome di qualsiasi utente o ruolo valido. In caso contrario, owner_name deve essere il nome dell'utente corrente, il nome di un utente per il quale l'utente corrente dispone di autorizzazioni IMPERSONATE oppure il nome di un ruolo a cui appartiene l'utente corrente.

TO SERVICE 'service_name'
Specifica il servizio remoto da associare all'utente identificato nella clausola WITH USER.

USER = user_name
Specifica l'entità database proprietaria del certificato associato al servizio remoto identificato dalla clausola TO SERVICE. Il certificato viene utilizzato per la crittografia e l'autenticazione dei messaggi scambiati con il servizio remoto.

ANONYMOUS
Specifica se viene utilizzato l'accesso anonimo durante la comunicazione con il servizio remoto. Se ANONYMOUS = ON viene usata l'autenticazione anonima e le operazioni nel database remoto vengono eseguite con un account membro del ruolo predefinito del database public. Se ANONYMOUS = OFF, le operazioni nel database remoto vengono eseguite con l'account di un utente specifico di tale database. Se questa clausola viene omessa, il valore predefinito è OFF.

Osservazioni:

Service Broker usa un'associazione al servizio remoto per individuare il certificato da usare per una nuova conversazione. La chiave pubblica nel certificato associato a user_name viene usata per autenticare i messaggi inviati al servizio remoto e crittografare una chiave di sessione che verrà quindi usata per crittografare la conversazione. Il certificato per user_name deve corrispondere al certificato per un utente nel database che ospita il servizio remoto.

Un'associazione al servizio remoto è necessaria solo per l'avvio dei servizi che comunicano con servizi di destinazione situati all'esterno dell'istanza di SQL Server. Un database che ospita un servizio di origine deve contenere associazioni a tutti i servizi di destinazione esterni all'istanza di SQL Server. Non è necessario che un database che ospita un servizio di destinazione contenga associazioni a servizi remoti per i servizi in fase di inizializzazione che comunicano con il servizio di destinazione. Quando i servizi di origine e di destinazione si trovano nella stessa istanza di SQL Server, non è necessaria alcuna associazione al servizio remoto. Se tuttavia è presente un'associazione al servizio remoto in cui il valore di service_name specificato per TO SERVICE corrisponde al nome del servizio locale, Service Broker userà l'associazione.

Se ANONYMOUS = ON, il servizio in fase di inizializzazione si connette al servizio di destinazione come membro del ruolo predefinito del database public. Per impostazione predefinita, i membri di questo ruolo non hanno l'autorizzazione per la connessione a un database. Per poter inviare un messaggio, il database di destinazione deve concedere al ruolo public l'autorizzazione CONNECT per il database e l'autorizzazione SEND per il servizio di destinazione.

Se un utente possiede più di un certificato, Service Broker seleziona quello con la data di scadenza più recente tra i certificati attualmente validi e contrassegnati con AVAILABLE FOR BEGIN_DIALOG.

Autorizzazioni

Le autorizzazioni per la creazione di un'associazione al servizio remoto vengono assegnate per impostazione predefinita all'utente indicato nella clausola USER, ai membri del ruolo predefinito del database db_owner, ai membri del ruolo predefinito del database db_ddladmin e ai membri del ruolo predefinito del server sysadmin.

L'utente che esegue l'istruzione CREATE REMOTE SERVICE BINDING deve disporre dell'autorizzazione di rappresentazione per l'entità specificata nell'istruzione.

Un'associazione al servizio remoto non può essere un oggetto temporaneo. I nomi delle associazioni ai servizi remoti che iniziano con # sono consentite, ma sono oggetti permanenti.

Esempi

R. Creazione di un'associazione al servizio remoto

Nell'esempio seguente viene creata un'associazione per il servizio //Adventure-Works.com/services/AccountsPayable. Service Broker usa il certificato di proprietà dell'entità database APUser per l'autenticazione per il servizio remoto e per scambiare la chiave di crittografia della sessione con il servizio remoto.

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

B. Creazione di un'associazione al servizio remoto utilizzando l'autenticazione anonima

Nell'esempio seguente viene creata un'associazione per il servizio //Adventure-Works.com/services/AccountsPayable. Service Broker usa il certificato di proprietà dell'entità database APUser per scambiare la chiave di crittografia della sessione con il servizio remoto. Service Broker non esegue l'autenticazione per il servizio remoto. Nel database che ospita il servizio remoto i messaggi vengono recapitati come utente guest.

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

Vedi anche

ALTER REMOTE edizione Standard RVICE BINDING (Transact-SQL)
DROP REMOTE edizione Standard RVICE BINDING (Transact-SQL)
EVENTDATA (Transact-SQL)