Udostępnij za pośrednictwem


Lekcja 2: Tworzenie bazy danych inicjatora

W tej lekcji użytkownik zapozna tworzenie bazy danych inicjatora i inicjatora Service Broker obiektów, które są używane w samouczek.Uruchom następujące kroki z kopii Management Studio , jest uruchomiona na tym samym komputerze co wystąpienie inicjatora Aparat baz danych.

Procedury

Utwórz punkt końcowy Service Broker

  • Skopiuj i wklej następujący kod w oknie Edytora kwerend.Następnie uruchom go do tworzenia Service Broker końcowego dla tego wystąpienie Aparat baz danych.A Service Broker punkt końcowy określa adres sieciowy, do której Service Broker wiadomości są wysyłane.Używa tego punktu końcowego Service Broker 4022, port domyślny TCP i określa, że komputer zdalny wystąpienia Aparat baz danych będzie używać połączeń uwierzytelniania systemu Windows do wysyłania wiadomości.

    Uwierzytelnianie systemu Windows działa, gdy oba komputery są w tym samym domena, lub są zaufane w domenas.Jeśli komputery nie znajdują się w domenach zaufanych, należy użyć zabezpieczeń certyfikat dla końcowych.Aby uzyskać więcej informacji, zobacz Jak Tworzenie certyfikatów dla zabezpieczeń transportu Service Broker (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łówny i użytkownika

  • Skopiuj i wklej następujący kod w oknie Edytora kwerend.Zmień hasło instrukcja tworzenia klucza głównego.Następnie należy uruchomić kod w celu utworzenia miejsce docelowe bazy danych używany dla tego samouczka.Domyślnie nowe bazy danych mają opcję ENABLE_BROKER zestaw do na.Kod tworzy również klucz głównego i użytkownika, który będzie używany do obsługi połączeń zdalnych i szyfrowanie.

    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 Edytora kwerend.Zmień nazwę pliku, określona w instrukcja kopii zapasowej certyfikatu do folderu w systemie.Następnie należy uruchomić kod w celu utworzenia certyfikat inicjatora, który jest używany do szyfrowania wiadomości.Określony folder powinien mieć uprawnienia, które zapobiegają dostępowi z konta innego niż konto systemu Windows i Windows konto wystąpienie Aparat baz danych jest uruchomiony.Lekcja 3, należy ręcznie skopiować InstInitiatorCertificate.cer plik do folderu, który można uzyskać dostęp 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 Edytora 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ć identyczne z tymi, 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 Edytora kwerend.Następnie uruchom go do utworzenia kontrakt dla konwersacji.Nazwa kontrakt i właściwości, które są określone w tym miejscu muszą być identyczne z 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 iusługa

  • Skopiuj i wklej następujący kod w oknie Edytora kwerend.Następnie uruchom go do utworzenia kolejki, usługa, która jest używana dla miejsce docelowe.Instrukcja tworzenia usługa kojarzy usługa z InstInitiatorQueue.Dlatego wszystkie wiadomości, które są wysyłane do usługa zostaną odebrane w InstInitiatorQueue.Tworzenie usługa również określa, że tylko konwersacje, które używają //BothDB/ 2instsample/simplecontract utworzony wcześniej usługa można używać 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 Edytora kwerend.Zmienianie klauzula z pliku, aby odwołać folder, do którego skopiowano InstTargetCertficate.cer pliku od kroku 3 w 1 lekcji.Następnie należy uruchomić kod w celu utworzenia 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
    

Utworzyć trasy

  • Skopiuj i wklej następujący kod w oknie Edytora kwerend.Zmień ciąg Mojemiejsce docelowekomputer do nazwy komputera, na którym jest uruchomiony na miejsce docelowe instancji.Następnie uruchom kod, aby utworzyć trasy usługa miejsce docelowe i usługa inicjatora i powiązanie usługa zdalnej który kojarzy Użytkownik_docelowy trasa usługa miejsce docelowe.

    Następujących instrukcji CREATE ROUTE założono, że nie istnieją żadne nazwy usługa zduplikowane w miejsce docelowe instancji.Jeśli wiele baz danych na miejsce docelowe wystąpienie usługi o tej samej nazwie, należy użyć klauzula BROKER_INSTANCE Aby 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

Pomyślnie utworzono inicjatora baz danych, które będą używane do samouczka.Następnie zostanie zakończone, konfigurowanie miejsce docelowe bazy danych przez tworzenie obiektów miejsce docelowe, które zależności obiektów inicjatora.See Lekcja 3: Korzystanie z obiektów docelowych konwersacji.