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.
Zobacz także