Поделиться через


Занятие 3. Завершение объектов целевой стороны диалога

На этом занятии обсуждается создание связанного сервера и маршрутов от целевого экземпляра компонента Database Engine к экземпляру инициатора. Выполните эти шаги из копии среды Management Studio, установленной на том же компьютере, где находится целевой экземпляр.

Процедуры

Создание ссылок на объекты инициатора

  • Скопируйте и вставьте следующий код в окно редактора запросов. Измените предложение FROM FILE таким образом, чтобы оно указывало на папку, в которую скопирован файл InstInitiatorCertficate.cer в шаге 4 на занятии 2. Затем выполните этот код, чтобы создать учетную запись пользователя инициатора и поместить в нее целевой сертификат.

    USE InstTargetDB
    GO
    CREATE USER InitiatorUser WITHOUT LOGIN;
    
    CREATE CERTIFICATE InstInitiatorCertificate
       AUTHORIZATION InitiatorUser
       FROM FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstInitiatorCertificate.cer';
    GO
    

Создание маршрутов

  • Скопируйте и вставьте следующий код в окно редактора запросов. Вместо строки MyInitiatorComputer укажите имя компьютера, на котором выполняется экземпляр инициатора. Затем выполните код для создания маршрутов к целевой службе и службе инициатора, а также привязки удаленной службы, связывающей InitiatorUser с маршрутом службы инициатора.

    В следующих инструкциях CREATE ROUTE предполагается, что в целевом экземпляре отсутствуют повторяющиеся имена служб. Если на целевом экземпляре в нескольких базах данных имеются службы с одинаковым именем, укажите в предложении BROKER_INSTANCE базу данных, для которой нужно открыть диалог.

    DECLARE @Cmd NVARCHAR(4000);
    
    SET @Cmd = N'USE InstTargetDB;
    CREATE ROUTE InstInitiatorRoute
    WITH SERVICE_NAME =
           N''//InstDB/2InstSample/InitiatorService'',
         ADDRESS = N''TCP://MyInitiatorComputer:4022'';';
    
    EXEC (@Cmd);
    
    SET @Cmd = N'USE msdb
    CREATE ROUTE InstTargetRoute
    WITH SERVICE_NAME =
            N''//TgtDB/2InstSample/TargetService'',
         ADDRESS = N''LOCAL''';
    
    EXEC (@Cmd);
    GO
    GRANT SEND
          ON SERVICE::[//TgtDB/2InstSample/TargetService]
          TO InitiatorUser;
    GO
    CREATE REMOTE SERVICE BINDING InitiatorBinding
          TO SERVICE N'//InstDB/2InstSample/InitiatorService'
          WITH USER = InitiatorUser;
    GO
    

Следующие шаги

Настройка целевой базы для поддержки диалога Service Broker с базой данных инициатора успешно завершена. После этого можно начать диалог в базе данных инициатора и отправить сообщение запроса целевой службе. См. раздел Занятие 4. Начало диалога.