Lição 1: Criar os objetos de conversação

Aplica-se a:SQL ServerAzure SQL Managed Instance

Nesta lição, você aprende a criar todos os objetos que permitem que um banco de dados dê suporte a uma conversa no banco de dados.

Procedimentos

Habilite o Service Broker e alterne para o banco de dados AdventureWorks2008R2

Observação

Os exemplos de código neste artigo foram testados usando o banco de dados de exemplo AdventureWorks2025, que você pode baixar da página inicial Microsoft SQL Server Samples and Community Projects.

  • Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para garantir que o Service Broker esteja habilitado no banco de dados AdventureWorks2008R2 e alterne o contexto para o banco de dados.

    USE master;
    GO
    
    ALTER DATABASE AdventureWorks2008R2
        SET ENABLE_BROKER;
    GO
    
    USE AdventureWorks2008R2;
    GO
    

Criar os tipos de mensagem

  • Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar os tipos de mensagem para a conversa. Como os objetos do Service Broker geralmente são referenciados em várias instâncias do Mecanismo de Banco de Dados, a maioria dos objetos do Service Broker recebe nomes em um formato URI. Isso ajuda a garantir que eles sejam exclusivos em vários computadores. Ambos os tipos de mensagem especificam que o Service Broker só validará se as mensagens são documentos XML bem formados e que não validará o XML em relação a um esquema específico.

    CREATE MESSAGE TYPE [//AWDB/1DBSample/RequestMessage]
        VALIDATION = WELL_FORMED_XML;
    
    CREATE MESSAGE TYPE [//AWDB/1DBSample/ReplyMessage]
        VALIDATION = WELL_FORMED_XML;
    GO
    

Criar o contrato

  • Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar o contrato para a conversa. O contrato especifica que as conversas que o utilizam devem enviar mensagens do tipo //AWDB/1DBSample/RequestMessage do iniciador para o destino e mensagens do tipo //AWDB/1DBSample/ReplyMessage do destino para o iniciador.

    CREATE CONTRACT [//AWDB/1DBSample/SampleContract]
        ([//AWDB/1DBSample/RequestMessage] SENT BY INITIATOR,
        [//AWDB/1DBSample/ReplyMessage] SENT BY TARGET);
    GO
    

Criar a fila de destino e o serviço

  • Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar a fila e o serviço usados para o destino. Como as filas são referenciadas a partir do mesmo banco de dados de maneira semelhante a tabelas e exibições, os nomes das filas são formatados como nomes de tabelas ou exibições. A CREATE SERVICE declaração associa o serviço ao TargetQueue1DB. Portanto, todas as mensagens enviadas para o serviço serão recebidas no TargetQueue1DB. O CREATE SERVICE também especifica que somente conversas que usam o AWDB/1DBSample/SampleContract criado anteriormente podem usar o serviço como um serviço de destino.

    CREATE QUEUE TargetQueue1DB;
    
    CREATE SERVICE [//AWDB/1DBSample/TargetService]
        ON QUEUE TargetQueue1DB
        ([//AWDB/1DBSample/SampleContract]);
    GO
    

Criar a fila do iniciador e o serviço

  • Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar a fila e o serviço usados para o iniciador. Como nenhum nome de contrato é especificado, nenhum outro serviço pode usar esse serviço como um serviço de destino.

    CREATE QUEUE InitiatorQueue1DB;
    
    CREATE SERVICE [//AWDB/1DBSample/InitiatorService]
        ON QUEUE InitiatorQueue1DB;
    GO
    

Próximo passo

Você configurou AdventureWorks2008R2 com êxito para dar suporte a uma conversa entre o AWDB/1DBSample/InitiatorService e o AWDB/1DBSample/TargetService. Em seguida, conclua uma conversa usando a configuração.