Udostępnij za pośrednictwem


Lekcja 2: Tworzenie bazy danych inicjatora

W tej lekcji dowiesz się do utworzenia bazy danych inicjatora, wszystkie inicjatora Service Broker obiekty, które są używane w tej instrukcji. Uruchom te czynności z kopii Management Studio na którym jest uruchomiony na tym samym komputerze co wystąpienie inicjatora Database Engine.

Procedury

Utwórz punkt końcowy usługa Broker

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go i tworzenia Service Broker punkt końcowy dla tego wystąpienie programu Database Engine. A Service Broker punkt końcowy określa adres sieci, do którego Service Broker wiadomości są wysyłane. Korzysta z tego punktu końcowego Service Broker domyślny TCP port 4022 i określa, że zdalnego wystąpienia Database Engine będzie korzystać z uwierzytelnianie systemu Windows połączeń do wysyłania wiadomości.

    Uwierzytelnianie systemu Windows działa w przypadku, gdy oba komputery znajdują się w tej samej domena lub znajdują się w zaufanych domenach.Jeśli komputery nie znajdują się w domenach zaufanych, należy użyć zabezpieczeń certyfikat dla punkty końcowe.Aby uzyskać więcej informacji zobacz Jak Tworzenie certyfikatów dla zabezpieczeniami transportu usługa Broker (języka 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
    

Tworzenie bazy danych inicjatora, klucz głównego i użytkownika

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Zmień hasło na instrukcja CREATE klucz główny.Następnie należy uruchomić kod, który chcesz utworzyć miejsce docelowe bazy danych, który jest używany dla tego samouczka.Nowych baz danych mają domyślnie ustawiony na opcję ENABLE_BROKER.Kod tworzy również klucz głównego i użytkownika, który będzie używany do szyfrowanie i połączeń zdalnych.

    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
    

Tworzenie certyfikat inicjatora

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Zmień nazwę pliku, jest określona w instrukcja kopia zapasowa certyfikat do odwoływania się do folderu, w tym systemie.Następnie należy uruchomić kod, który chcesz utworzyć certyfikat inicjatora, który jest używany do szyfrowania wiadomości.Folder, który został określony, powinni mieć uprawnienia, które uniemożliwiają dostęp z konta innego niż konto użytkownika systemu Windows oraz systemu Windows konto wystąpienie Database Engine jest uruchomiony. Lekcja 3, należy ręcznie skopiować InstInitiatorCertificate.cer plik do folderu, które mogą być udostępniane z miejsce docelowe wystąpienie.

    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
    

Utwórz typy wiadomości

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go do tworzenia typów wiadomości w konwersacji.typ komunikatu Nazwy i właściwości określone w tym miejscu muszą być takie same jak te, które zostały utworzone w InstTargetDB w poprzedniej lekcji.

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

Tworzenie kontrakt

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go do utworzenia kontrakt do konwersacji.Nazwa kontraktu i właściwości, które są określone w tym polu musi być taka sama, jak kontrakt, który zostanie utworzony w InstInitiatorDB podczas następnej lekcji.

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

Tworzenie kolejki inicjatora i usługa

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Następnie uruchom go do utworzenia kolejki, usługa, która jest używana dla miejsce docelowe.Instrukcja CREATE usługa kojarzy usługa z InstInitiatorQueue.Dlatego wszystkie wiadomości, które są wysyłane do usługa będą odbierane w InstInitiatorQueue.Usługa CREATE również określa, że tylko konwersacji, które używają //BothDB/ 2InstSample/SimpleContract , który został wcześniej utworzony, może korzystać z usługi jako usługa miejsce docelowe.

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

Tworzenie odwołania do obiektów miejsce docelowe

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Zmienianie klauzula FROM FILE, aby odwołać się w folderze, do której skopiowane InstTargetCertficate.cer plik od kroku 3, Lekcja 1.Następnie należy uruchomić kod, który chcesz utworzyć docelowego użytkownika i ściągać w certyfikacie miejsce docelowe.

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

Tworzenie marszruty

  • Skopiuj i wklej następujący kod w oknie Edytor kwerend.Zmień ciąg MyTargetComputer na nazwę komputera, na którym jest uruchomiony system miejsce docelowe wystąpienie.Następnie należy uruchomić kod, który chcesz utworzyć trasy do usługa miejsce docelowe usługa inicjatora i wiązanie usługi zdalnej, który kojarzy Użytkownik_docelowy trasa docelowego usługa.

    Poniższe instrukcje CREATE trasa zakłada się, że w obiekcie docelowym są żadnych nazw zduplikowanych usługa wystąpienie.Jeśli wiele baz danych na miejsce docelowe wystąpienie usług o takiej samej nazwie, należy użyć klauzula BROKER_INSTANCE określić bazę danych, na którym chcesz otworzyć konwersacji.

    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
    

Następne kroki

Inicjator baz danych, które będą używane dla samouczek został pomyślnie utworzony.Następnie będzie skonfigurowaniu miejsce docelowe bazy danych przez utworzenie obiektów miejsce docelowe, które mają zależności obiektów inicjatora.Zobacz Lekcja 3: Kończenie konwersacji obiekty domiejsce doceloweowe.