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 relative alla sintassi Transact-SQL

Sintassi

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

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.

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

USER = user_name
Specifica il principale del database che possiede il 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. Tuttavia, se è presente un binding di servizio remoto dove la service_name specificata per TO SERVICE corrisponde al nome del servizio locale, il Service Broker utilizzerà il binding.

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 inviare con successo un messaggio, il database target deve concedere al ruolo pubblico il permesso CONNECT per il database e SEND il permesso per il servizio target.

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

I permessi per creare un collegamento di servizio remoto sono predefiniti per l'utente nominato nella USER clausola, i membri del db_owner ruolo fisso nel database, i membri del ruolo fisso del database db_ddladmin e i membri del ruolo fisso del sysadmin server.

L'utente che esegue l'istruzione CREATE REMOTE SERVICE BINDING deve avere il permesso di impersonare il principale specificato nell'affermazione.

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 SERVICE BINDING (Transact-SQL)
DROP REMOTE SERVICE BINDING (Transact-SQL)
DATI EVENTO (Transact-SQL)