Lektion 2: Skapa initierardatabasen

gäller för:SQL ServerAzure SQL Managed Instance

I den här lektionen lär du dig att skapa initierardatabasen och alla service broker-objekt för initierare som används i den här självstudien. Kör de här stegen från en kopia av Management Studio som körs på samma dator som initierarinstansen databasmotorn.

Procedures

Skapa en Service Broker-slutpunkt

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att skapa en Service Broker-slutpunkt för den här instansen av databasmotorn. En Service Broker-slutpunkt anger nätverksadressen som Service Broker-meddelanden skickas till. Den här slutpunkten använder service broker-standardvärdet TCP-port 4022 och anger att fjärrinstanser av databasmotorn ska använda Windows-autentiseringsanslutningar för att skicka meddelanden.

    Windows-autentisering fungerar när båda datorerna finns i samma domän eller finns i betrodda domäner. Om datorerna inte finns i betrodda domäner använder du certifikatsäkerhet för slutpunkterna. Mer information finns i Så här skapar du certifikat för Service Broker-transportsäkerhet.

    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
    

Skapa initierardatabasen, huvudnyckeln och användaren

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. Ändra lösenordet för -instruktionen CREATE MASTER KEY och kör sedan koden för att skapa måldatabasen som används för den här självstudien. Som standard har ENABLE_BROKER nya databaser alternativet inställt på på. Koden skapar också huvudnyckeln och användaren som ska användas för kryptering och fjärranslutningar.

    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
    

Skapa initierarcertifikatet

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. Ändra filnamnet som anges i -instruktionen BACKUP CERTIFICATE så att det refererar till en mapp i systemet. Kör sedan koden för att skapa initierarcertifikatet som används för att kryptera meddelanden. Mappen som du anger ska ha behörigheter som förhindrar åtkomst från andra konton än ditt Windows-konto och Windows-kontot som instansen av databasmotorn körs under. För lektion 3 måste du kopiera InstInitiatorCertificate.cer filen manuellt till en mapp som kan nås från målinstansen.

    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
    

Skapa meddelandetyperna

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att skapa meddelandetyperna för konversationen. Namnen och egenskaperna för meddelandetypen som anges här måste vara identiska med de som skapades i InstTargetDB föregående lektion.

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

Skapa kontraktet

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att skapa kontraktet för konversationen. Kontraktnamnet och egenskaperna som anges här måste vara identiska med det kontrakt som du skapar under InstInitiatorDB nästa lektion.

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

Skapa initierarkön och tjänsten

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster och kör den sedan för att skapa kön och tjänsten som används för målet. -instruktionen CREATE SERVICE associerar tjänsten med InstInitiatorQueue. Därför tas alla meddelanden som skickas till tjänsten emot i InstInitiatorQueue. Anger CREATE SERVICE också att endast konversationer som använder BothDB/2InstSample/SimpleContract som skapades tidigare kan använda tjänsten som måltjänst.

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

Skapa referenser till målobjekt

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. FROM FILE Ändra satsen så att den refererar till mappen som du kopierade filen InstTargetCertificate.cer från steg 3 i lektion 1. Kör sedan koden för att skapa en målanvändare och hämta målcertifikatet.

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

Skapa vägar

  • Kopiera och klistra in följande kod i ett frågeredigerarefönster. Ändra strängen MyTargetComputer till namnet på den dator som kör målinstansen. Kör sedan koden för att skapa vägar till måltjänsten och initierartjänsten och en fjärrtjänstbindning som associerar TargetUser med måltjänstvägen.

    CREATE ROUTE Följande instruktioner förutsätter att det inte finns några duplicerade tjänstnamn i målinstansen. Om flera databaser på målinstansen har tjänster med samma namn använder du BROKER_INSTANCE satsen för att ange den databas där du vill öppna en konversation.

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

Nästa steg

Du har skapat initierardatabaserna för självstudien. Därefter slutför du konfigurationen av måldatabasen genom att skapa målobjekten som har beroenden för initierarobjekt.