Share via


Lektion 1: Erstellen der Zieldatenbank

In dieser Lektion erfahren Sie, wie Sie die Zieldatenbank und alle Service Broker-Zielobjekte erstellen, die keine Abhängigkeiten in der Initiatordatenbank aufweisen. Führen Sie diese Schritte von einer Kopie von Management Studio aus, die auf demselben Computer ausgeführt wird wie die Zielinstanz von Database Engine (Datenbankmodul).

Verfahrensweisen

Erstellen eines Service Broker-Endpunkts

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um einen Service Broker-Endpunkt für diese Instanz von Database Engine (Datenbankmodul) zu erstellen. Ein Service Broker-Endpunkt legt die Netzwerkadresse fest, an die Service Broker-Nachrichten gesendet werden. Dieser Endpunkt verwendet den Service Broker-Standard mit TCP-Port 4022 und legt fest, dass die Remoteinstanzen von Database Engine (Datenbankmodul) Windows Authentication-Verbindungen zum Senden von Nachrichten verwenden.

    Windows Authentication funktioniert, wenn sich beide Computer in derselben Domäne oder vertrauenswürdigen Domänen befinden. Befinden sich die Computer nicht in vertrauenswürdigen Domänen, verwenden Sie die 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 master.sys.endpoints
               WHERE name = N'InstTargetEndpoint')
         DROP ENDPOINT InstTargetEndpoint;
    GO
    CREATE ENDPOINT InstTargetEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4022 )
    FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
    GO
    

Erstellen von Zieldatenbank, Hauptschlüssel und Benutzer

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Ändern Sie das Kennwort in der CREATE MASTER KEY-Anweisung. Führen Sie anschließend den Code aus, um die für dieses Lernprogramm verwendete Zieldatenbank zu erstellen. Standardmäßig ist bei neuen Datenbanken die ENABLE_BROKER-Option auf ON festgelegt. Außerdem erstellt der Code den Hauptschlüssel und Benutzer, die zum Unterstützen von Verschlüsselung und Remoteverbindungen verwendet werden.

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

Erstellen des Zielzertifikats

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Ändern Sie den in der BACKUP CERTIFICATE-Anweisung angegebenen Dateinamen in einen Namen, der auf einen Ordner in Ihrem System verweist. Führen Sie anschließend den Code aus, um das Zielzertifikat zu erstellen, das zum Verschlüsseln von Nachrichten verwendet wird. Der Ordner, den Sie angeben, sollte über Berechtigungen verfügen, die den Zugriff von anderen Konten als Ihrem Windows-Konto und dem Windows-Konto, unter dem die Instanz von Database Engine (Datenbankmodul) ausgeführt wird, verhindern. Für Lektion 2 müssen Sie die Datei InstTargetCertificate.cer manuell in einen Ordner kopieren, auf den von der Initiatorinstanz zugegriffen werden kann.

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

Erstellen der Nachrichtentypen

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie anschließend den Code aus, um die Nachrichtentypen für die Konversation zu erstellen. Die hier angegebenen Namen und Eigenschaften der Nachrichtentypen müssen mit denen identisch sein, die Sie in der nächsten Lektion in InstInitiatorDB erstellen.

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

Erstellen des Vertrags

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um den Vertrag für die Konversation zu erstellen. Der angegebene Vertragsname und die Eigenschaften müssen mit dem Vertrag identisch sein, den Sie in der nächsten Lektion in InstInitiatorDB erstellen.

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

Erstellen von Zielwarteschlange und Zieldienst

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um die Warteschlange und den Dienst zu erstellen, die bzw. der für das Ziel verwendet wird. Die CREATE SERVICE-Anweisung verknüpft den Dienst mit InstTargetQueue, sodass alle Nachrichten, die an den Dienst gesendet werden, in InstTargetQueue empfangen werden. Außerdem gibt die CREATE SERVICE-Anweisung an, dass nur Konversationen, die den zuvor erstellten //BothDB/2InstSample/SimpleContract verwenden, den Dienst als Zieldienst verwenden können.

    CREATE QUEUE InstTargetQueue;
    
    CREATE SERVICE [//TgtDB/2InstSample/TargetService]
           AUTHORIZATION TargetUser
           ON QUEUE InstTargetQueue
           ([//BothDB/2InstSample/SimpleContract]);
    GO
    

Nächste Schritte

Sie haben die Datenbanken, die für das Lernprogramm verwendet werden, erfolgreich erstellt. Im nächsten Schritt erstellen Sie die InstInitiatorDB und konfigurieren sie mit den Objekten, die zum Unterstützen des Initiatorendes einer Service Broker-Konversation erforderlich sind. Siehe Lektion 2: Erstellen der Initiatordatenbank.