Freigeben über


Lektion 1: Erstellen der Zieldatenbank

Gilt für: SQL Server Azure SQL Managed Instance

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 in einer Instanz von Management Studio aus, die auf demselben Computer ausgeführt wird wie die Zielinstanz der Datenbank-Engine.

Prozeduren

Erstellen eines Service Broker-Endpunkts

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editor-Fenster ein. Führen Sie ihn dann aus, um einen Service Broker-Endpunkt für diese Instanz der Datenbank-Engine zu erstellen. Ein Service Broker-Endpunkt richtet die Netzwerkadresse ein, an die Service Broker-Nachrichten gesendet werden. Dieser Endpunkt verwendet standardmäßig den TCP-Port 4022 für den Service Broker und richtet die Remoteinstanzen der Datenbank-Engine Windows Authentifizierung-Verbindungen zum Senden von Nachrichten ein.

    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 Transportsicherheit von Service Broker (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-Editor-Fenster 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-Editor-Fenster 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 der Datenbank-Engine 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-Editor-Fenster 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 der InstTargetDB-Datenbank 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-Editor-Fenster 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. Die CREATE SERVICE-Anweisung bestimmt ebenfalls, dass nur Konversationen, die den zuvor erstellten //BothDB/ 2InstSample/SimpleContract nutzen, 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. Weitere Informationen finden Sie unter Lektion 2: Erstellen der Initiatordatenbank.

Siehe auch