CREATE REMOTE SERVICE BINDING (Transact-SQL)
Erstellt eine Bindung, die die zum Initiieren einer Konversation mit einem Remotedienst zu verwendenden Sicherheitsanmeldeinformationen definiert.
Syntax
CREATE REMOTE SERVICE BINDING binding_name
[ AUTHORIZATION owner_name ]
TO SERVICE 'service_name'
WITH USER = user_name [ , ANONYMOUS = { ON | OFF } ]
[ ; ]
Argumente
binding_name
Der Name der zu erstellenden Remotedienstbindung. Server-, Datenbank- und Schemanamen können nicht angegeben werden. Bei binding_name muss es sich um einen gültigen sysname handeln.AUTHORIZATION owner_name
Legt den Besitzer der Bindung auf den angegebenen Datenbankbenutzer oder die angegebene Datenbankrolle fest. Ist der aktuelle Benutzer dbo oder sa, kann owner_name der Name eines beliebigen gültigen Benutzers bzw. einer beliebigen gültigen Rolle sein. Andernfalls muss owner_name der Name des aktuellen Benutzers, der Name eines Benutzers, für den der aktuelle Benutzer IMPERSONATE-Berechtigungen besitzt, oder der Name einer Rolle sein, der der aktuelle Benutzer angehört.TO SERVICE 'service_name'
Gibt den Remotedienst an, der an den in der WITH USER-Klausel identifizierten Benutzer gebunden werden soll.USER = user_name
Gibt den Datenbankprinzipal an, der das Zertifikat besitzt, das dem von der TO SERVICE-Klausel identifizierten Remotedienst zugeordnet wird. Dieses Zertifikat wird für die Verschlüsselung und Authentifizierung von Nachrichten verwendet, die mit dem Remotedienst ausgetauscht werden.ANONYMOUS
Gibt an, ob die anonyme Authentifizierung bei der Kommunikation mit dem Remotedienst verwendet wird. Wenn ANONYMOUS = ON angegeben ist, wird die anonyme Authentifizierung verwendet und Vorgänge in der Remotedatenbank finden als Mitglieder der festen Datenbankrolle public statt. Wenn ANONYMOUS = OFF angegeben ist, finden Vorgänge in der Remotedatenbank als bestimmte Benutzer dieser Datenbank statt. Wird diese Klausel nicht angegeben, ist die Standardeinstellung OFF. In Service Broker-Dialogsicherheit wird beschrieben, wie Remotedienstbindungen Prinzipalen im Rahmen der SQL Server-Dialogsicherheit zugeordnet werden.
Hinweise
Service Broker verwendet eine Remotedienstbindung, um nach dem für eine neue Konversation zu verwendenden Zertifikat zu suchen. Der öffentliche Schlüssel des Zertifikats, das user_name zugeordnet ist, wird zur Authentifizierung von Nachrichten an den Remotedienst und zur Verschlüsselung eines Sitzungsschlüssels verwendet, der dann zur Verschlüsselung der Konversation verwendet wird. Das Zertifikat für user_name muss dem Zertifikat für einen Benutzer in der Datenbank entsprechen, die als Host für den Remotedienst dient.
Eine Remotedienstbindung wird nur zum Initiieren von Diensten benötigt, die mit Zieldiensten außerhalb der SQL Server-Instanz kommunizieren. Eine Datenbank, die als Host für einen initiierenden Dienst dient, muss Remotedienstbindungen für alle Zieldienste außerhalb der SQL Server-Instanz enthalten. Eine Datenbank, die als Host für einen Zieldienst dient, muss keine Remotedienstbindungen für die initiierenden Dienste enthalten, die mit dem Zieldienst kommunizieren. Wenn sich der Initiator- und der Zieldienst in der gleichen Instanz von SQL Server befinden, ist keine Dienstbindung erforderlich. Wenn hingegen eine Remotedienstbindung vorhanden ist, in der service_name für TO SERVICE dem Namen des lokalen Diensts entspricht, verwendet Service Broker die Bindung.
Wenn ANONYMOUS = ON angegeben ist, stellt der initiierende Dienst eine Verbindung mit dem Zieldienst als Mitglied der festen Datenbankrolle public her. Standardmäßig haben Mitglieder dieser Rolle keine Berechtigung, eine Verbindung mit einer Datenbank herzustellen. Damit eine Nachricht erfolgreich gesendet wird, muss die Zieldatenbank der public-Rolle die CONNECT-Berechtigung für die Datenbank und die SEND-Berechtigung für den Zieldienst erteilen.
Besitzt ein Benutzer mehrere Zertifikate, wählt Service Broker das Zertifikat mit dem aktuellsten Ablaufzeitpunkt aus den derzeit gültigen und als AVAILABLE FOR BEGIN_DIALOG gekennzeichneten Zertifikaten aus.
Berechtigungen
Die Berechtigung zum Erstellen einer Remotedienstbindung erhalten standardmäßig in der USER-Klausel benannte Benutzer, Mitglieder der festen Datenbankrollen db_owner und db_ddladmin sowie Mitglieder der festen Serverrolle sysadmin.
Der Benutzer, der die CREATE REMOTE SERVICE BINDING-Anweisung ausführt, muss berechtigt sein, die Identität des in der Anweisung angegebenen Prinzipals anzunehmen.
Eine Remotedienstbindung ist möglicherweise kein temporäres Objekt. Namen von Remotedienstbindungen, die mit # beginnen, sind zulässig. Sie sind jedoch dauerhafte Objekte.
Beispiele
A. Erstellen einer Remotedienstbindung
Im folgenden Beispiel wird eine Bindung für den Dienst //Adventure-Works.com/services/AccountsPayable erstellt. Service Broker verwendet das Zertifikat im Besitz des APUser-Datenbankprinzipals für die Authentifizierung beim Remotedienst und den Austausch des Sitzungsverschlüsselungsschlüssels mit dem Remotedienst.
CREATE REMOTE SERVICE BINDING APBinding
TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
WITH USER = APUser ;
B. Erstellen einer Remotedienstbindung mithilfe der anonymen Authentifizierung
Im folgenden Beispiel wird eine Bindung für den Dienst //Adventure-Works.com/services/AccountsPayable erstellt. Service Broker verwendet das Zertifikat im Besitz des APUser-Datenbankprinzipals für den Austausch des Sitzungsverschlüsselungsschlüssels mit dem Remotedienst. Es findet keine Authentifizierung von Service Broker beim Remotedienst statt. In der Datenbank, die als Host für den Remotedienst dient, werden Nachrichten als guest-Benutzer übermittelt.
CREATE REMOTE SERVICE BINDING APBinding
TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
WITH USER = APUser, ANONYMOUS=ON ;