Lektion 2: Erstellen der Initiatordatenbank

Neu: 15. September 2007

In dieser Lektion lernen Sie, wie Sie die Initiatordatenbank und alle Service Broker-Initiatorobjekte, die in diesem Lernprogramm verwendet werden, erstellen. Führen Sie diese Schritte mit einer Kopie von Management Studio aus, die auf dem gleichen Computer wie die Initiatorinstanz von Datenbankmodul ausgeführt wird.

Vorgehensweisen

Erstellen eines Service Broker-Endpunkts

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um einen Service Broker-Endpunkt für diese Instanz von Datenbankmodul zu erstellen. Ein Service Broker-Endpunkt gibt die Netzwerkadresse an, an die Service Broker-Nachrichten gesendet werden. Der Endpunkt verwendet den standardmäßigen Service Broker-TCP-Port 4022 und gibt an, dass Remoteinstanzen von Datenbankmodul Nachrichten mithilfe von Windows-Authentifizierungsverbindungen senden.

    Die Windows-Authentifizierung kann verwendet werden, wenn beide Computer sich in der gleichen Domäne oder in vertrauenswürdigen Domänen befinden. Befinden sich die Computer nicht in vertrauenswürdigen Domänen, verwenden Sie Zertifikatssicherheit für die Endpunkte. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen von Zertifikaten für die Service Broker-Transportsicherheit (Transact-SQL).

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.endpoints
               WHERE name = N'InstInitiatorEndpoint')
         DROP ENDPOINT InstInitiatorEndpoint;
    GO
    CREATE ENDPOINT InstInitiatorEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4022 )
    FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
    GO
    

Erstellen von Initiatordatenbank, Hauptschlüssel und Benutzer

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Ändern Sie das Kennwort in der CREATE MASTER KEY-Anweisung. Führen Sie dann den Code aus, um die Zieldatenbank zu erstellen, die für dieses Lernprogramm verwendet wird. Standardmäßig ist bei neuen Datenbanken die ENABLE_BROKER-Option aktiviert. Durch diesen Code werden auch der Hauptschlüssel und der Benutzer erstellt, die zur Unterstützung von Verschlüsselung und Remoteverbindungen verwendet werden.

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.databases
               WHERE name = N'InstInitiatorDB')
         DROP DATABASE InstInitiatorDB;
    GO
    CREATE DATABASE InstInitiatorDB;
    GO
    USE InstInitiatorDB;
    GO
    
    CREATE MASTER KEY
           ENCRYPTION BY PASSWORD = N'<EnterStrongPassword2Here>';
    GO
    CREATE USER InitiatorUser WITHOUT LOGIN;
    GO
    

Erstellen des Initiatorzertifikats

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Ändern Sie den in der BACKUP CERTIFICATE-Anweisung angegebenen Dateinamen so, dass er auf einen Ordner in Ihrem System verweist. Führen Sie dann den Code aus, um das Initiatorzertifikat zu erstellen, das zum Verschlüsseln von Nachrichten verwendet wird. Der angegebene Ordner sollte Berechtigungen aufweisen, die den Zugriff von anderen Konten als Ihrem Windows-Konto oder dem Windows-Konto, unter dem die Instanz von Datenbankmodul ausgeführt wird, verhindern. Für Lektion 3 müssen Sie die Datei InstInitiatorCertificate.cer manuell in einen Ordner kopieren, auf den von der Zielinstanz direkt zugegriffen werden kann.

    CREATE CERTIFICATE InstInitiatorCertificate
         AUTHORIZATION InitiatorUser
         WITH SUBJECT = N'Initiator Certificate',
              EXPIRY_DATE = N'12/31/2010';
    
    BACKUP CERTIFICATE InstInitiatorCertificate
      TO FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstInitiatorCertificate.cer';
    GO
    

Erstellen der Nachrichtentypen

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um die Nachrichtentypen für die Konversation zu erstellen. Die hier angegebenen Namen für Nachrichtentypen und Eigenschaften müssen mit denen übereinstimmen, die Sie in der vorherigen Lektion in InstTargetDB erstellt haben.

    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

Erstellen des Vertrags

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um den Vertrag für die Konversation zu erstellen. Der hier angegebene Vertragsname und die Eigenschaften müssen mit dem Vertrag übereinstimmen, den Sie in der nächsten Lektion in der InstInitiatorDB erstellen.

    CREATE CONTRACT [//BothDB/ 2InstSample/SimpleContract]
          ([//BothDB/ 2InstSample/RequestMessage]
             SENT BY INITIATOR,
           [//BothDB/ 2InstSample/ReplyMessage]
             SENT BY TARGET
          );
    GO
    

Erstellen von Initiatorwarteschlange und -dienst

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um die Warteschlange und den Dienst zu erstellen, die für das Ziel verwendet werden. Die CREATE SERVICE-Anweisung ordnet InstInitiatorQueue dem Dienst zu. Deshalb werden alle Nachrichten, die an den Dienst gesendet werden, in InstInitiatorQueue empfangen. Die CREATE SERVICE-Anweisung gibt außerdem an, dass nur Konversationen, welche den von Ihnen zuvor erstellten //BothDB/ 2InstSample/SimpleContract verwenden, den Dienst als Zieldienst verwenden können.

    CREATE QUEUE InstInitiatorQueue;
    
    CREATE SERVICE [//InstDB/2InstSample/InitiatorService]
           AUTHORIZATION InitiatorUser
           ON QUEUE InstInitiatorQueue;
    GO
    

Erstellen von Verweisen auf Zielobjekte

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Ändern Sie die FROM FILE-Klausel so, dass der Ordner referenziert wird, in den Sie in Schritt 3 von Lektion 1 die InstTargetCertficate.cer-Datei kopiert haben. Führen Sie dann den Code aus, um einen Zielbenutzer zu erstellen und das Zielzertifikat aufzurufen.

    CREATE USER TargetUser WITHOUT LOGIN;
    
    CREATE CERTIFICATE InstTargetCertificate 
       AUTHORIZATION TargetUser
       FROM FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer'
    GO
    

Erstellen von Routen

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Ändern Sie die Zeichenfolge MyTargetComputer auf den Namen des Computers, der die Zielinstanz ausführt. Führen Sie dann den Code aus, um Routen zum Zieldienst und Initiatordienst und eine Remotedienstbindung zu erstellen, die den TargetUser mit der Route des Zieldiensts verknüpft.

    Die folgenden CREATE ROUTE-Anweisungen gehen davon aus, dass es in der Zielinstanz keine Dienstnamen doppelt gibt. Wenn mehrere Datenbanken in der Zielinstanz Dienste mit dem gleichen Namen aufweisen, geben Sie mithilfe der BROKER_INSTANCE-Klausel die Datenbank an, in der Sie eine Konversation öffnen möchten.

    DECLARE @Cmd NVARCHAR(4000);
    
    SET @Cmd = N'USE InstInitiatorDB;
    CREATE ROUTE InstTargetRoute
    WITH SERVICE_NAME =
           N''//TgtDB/2InstSample/TargetService'',
         ADDRESS = N''TCP://MyTargetComputer:4022'';';
    
    EXEC (@Cmd);
    
    SET @Cmd = N'USE msdb
    CREATE ROUTE InstInitiatorRoute
    WITH SERVICE_NAME =
           N''//InstDB/2InstSample/InitiatorService'',
         ADDRESS = N''LOCAL''';
    
    EXEC (@Cmd);
    GO
    CREATE REMOTE SERVICE BINDING TargetBinding
          TO SERVICE
             N'//TgtDB/2InstSample/TargetService'
          WITH USER = TargetUser;
    
    GO
    

Nächste Schritte

Sie haben erfolgreich die Zieldatenbanken erstellt, die für das Lernprogramm verwendet werden. Als Nächstes schließen Sie die Konfiguration der Zieldatenbank ab, indem Sie die Zielobjekte mit Abhängigkeiten zu Initiatorobjekten erstellen. Siehe Lektion 3: Abschließen der Zielkonversationsobjekte.

Siehe auch

Andere Ressourcen

BACKUP CERTIFICATE (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
EXECUTE (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
Service Broker-Dialogsicherheit
Konversationsarchitektur
Dienstarchitektur

Hilfe und Informationen

Informationsquellen für SQL Server 2005