CREATE REMOTE SERVICE BINDING (Transact-SQL)
Gilt für: SQL Server
Erstellt eine Bindung, mit der die Sicherheitsanmeldeinformationen definiert werden, mit denen eine Konversation mit einem Remotedienst initiiert werden soll.
Transact-SQL-Syntaxkonventionen
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 Schemaname können nicht angegeben werden. binding_name muss einen gültigen sysname-Wert besitzen.
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 erscheinen als Mitglieder der festen Datenbankrolle public. 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.
Bemerkungen
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_namezugeordnet 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 festgelegt wurde, 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 führt mit dem Zertifikat, das sich im Besitz des APUser
-Datenbankprinzipals befindet, eine Authentifizierung gegenüber dem Remotedienst durch und tauscht den Verschlüsselungsschlüssel für die Sitzung mit dem Remotedienst aus.
CREATE REMOTE SERVICE BINDING APBinding
TO SERVICE '//Adventure-Works.com/services/AccountsPayable'
WITH USER = APUser ;
B. Erstellen einer Remotedienstbindung mit anonymer Authentifizierung
Im folgenden Beispiel wird eine Bindung für den Dienst //Adventure-Works.com/services/AccountsPayable
erstellt. Service Broker tauscht mit dem Zertifikat, das sich im Besitz des APUser
-Datenbankprinzipals befindet, den Verschlüsselungsschlüssel für die Sitzung mit dem Remotedienst aus. 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 ;
Weitere Informationen
ALTER REMOTE SERVICE BINDING (Transact-SQL)
DROP REMOTE SERVICE BINDING (Transact-SQL)
EVENTDATA (Transact-SQL)