CREATE REMOTE SERVICE BINDING (Transact-SQL)
Crea un'associazione che definisce le credenziali di protezione da utilizzare per avviare una conversazione con un servizio remoto.
Service Broker utilizza un'associazione al servizio remoto per individuare il certificato da utilizzare per una nuova conversazione. La chiave pubblica nel certificato associato a user_name viene utilizzata per autenticare i messaggi inviati al servizio remoto e crittografare una chiave di sessione che verrà quindi utilizzata 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 che si trovano all'esterno dell'istanza di SQL Server. Un database che ospita un servizio di origine deve contenere associazioni ai servizi remoti per 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 dove il valore di service_name specificato per TO SERVICE corrisponde al nome del servizio locale, in Service Broker viene utilizzata 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 il certificato con la data di scadenza più recente tra i certificati validi e contrassegnati con AVAILABLE FOR BEGIN_DIALOG.
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.
A. Creazione di un'associazione al servizio remoto
Nell'esempio seguente viene creata un'associazione per il servizio //Adventure-Works.com/services/AccountsPayable. Service Broker utilizza 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 utilizza 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 ;
