第 4 课:删除会话对象

在本课中,您将学习删除那些通过使用内部激活存储过程来使数据库能够支持会话的对象。

过程

切换到 AdventureWorks 数据库

  • 复制以下代码并将其粘贴到查询编辑器窗口中。然后,运行该代码以将上下文切换到 AdventureWorks 数据库。

    USE AdventureWorks;
    GO
    

删除会话对象。

  • 复制以下代码并将其粘贴到查询编辑器窗口中。然后,运行代码以删除用于支持该会话的对象。

    IF EXISTS (SELECT * FROM sys.objects
               WHERE name =
               N'TargetActivProc')
         DROP PROCEDURE TargetActivProc;
    
    IF EXISTS (SELECT * FROM sys.services
               WHERE name =
               N'//AWDB/InternalAct/TargetService')
         DROP SERVICE
         [//AWDB/InternalAct/TargetService];
    
    IF EXISTS (SELECT * FROM sys.service_queues
               WHERE name = N'TargetQueueIntAct')
         DROP QUEUE TargetQueueIntAct;
    
    -- Drop the intitator queue and service if they already exist.
    IF EXISTS (SELECT * FROM sys.services
               WHERE name =
               N'//AWDB/InternalAct/InitiatorService')
         DROP SERVICE
         [//AWDB/InternalAct/InitiatorService];
    
    IF EXISTS (SELECT * FROM sys.service_queues
               WHERE name = N'InitiatorQueueIntAct')
         DROP QUEUE InitiatorQueueIntAct;
    
    -- Drop contract and message type if they already exist.
    IF EXISTS (SELECT * FROM sys.service_contracts
               WHERE name =
               N'//AWDB/InternalAct/SampleContract')
         DROP CONTRACT
         [//AWDB/InternalAct/SampleContract];
    
    IF EXISTS (SELECT * FROM sys.service_message_types
               WHERE name =
               N'//AWDB/InternalAct/RequestMessage')
         DROP MESSAGE TYPE
         [//AWDB/InternalAct/RequestMessage];
    
    IF EXISTS (SELECT * FROM sys.service_message_types
               WHERE name =
               N'//AWDB/InternalAct/ReplyMessage')
         DROP MESSAGE TYPE
         [//AWDB/InternalAct/ReplyMessage];
    

后续步骤

本步骤将结束教程。 教程只是简要的概述, 并不能说明所有可能的情况。 教程使用的是简化的逻辑和错误处理方法,不应用于生产环境。若要创建高效、可靠和强健的会话,您需要比本教程中的示例更为复杂的代码。

返回 Service Broker 教程

Service Broker 教程