如何检测何时触发触发器?

时间:2020-02-18 11:07:14

标签: c# sql-server winforms windows-services service-broker

我有一个项目,在该项目中,购买产品时必须向客户发送电子邮件。我一直在与其他开发人员进行交谈,我们得出的结论是,完成此项目需要完成3个主要步骤:

  1. 创建一个触发器,当将数据插入销售表时将触发该触发器;
  2. 在触发此触发器时创建Windows服务以“监视”;
  3. 用于发送电子邮件的WinForms应用。

我知道如何通过WinForms应用发送电子邮件,因此步骤3可以。 我阅读了有关Service Broker的信息,并在数据库中启用了它。另外,我创建了触发器,以便在插入或更新数据时通过Service Broker发送消息。我遵循了this tutorial,并提出了以下触发条件:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER SendServiceBroker
   ON  dbo.Sales
   AFTER INSERT,UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @ch UNIQUEIDENTIFIER
    DECLARE @msg NVARCHAR(MAX) ;
    BEGIN DIALOG CONVERSATION @ch
        FROM SERVICE [InitiatorService]
        TO SERVICE 'TargetService'
        ON CONTRACT [http://ssb.csharp.at/HelloWorldContract]
        WITH ENCRYPTION = OFF ;
        SET @msg = '<HelloWorldRequest>
                        Gabriela
                    </HelloWorldRequest>' ;
        SEND ON CONVERSATION @ch 
        MESSAGE TYPE [http://ssb.csharp.at/RequestMessage] 
        (@msg) ;
END
GO

此外,我在Microsoft的GitHub页面中找到了Windows Service project的代码。我在计算机上安装了该服务,然后在Sales表中插入了一些数据,但是没有任何反应。 我曾考虑过直接在触发器上发送电子邮件(使用sp_send_dbmail),但是我没有这样做的必要权限。 我认为要使它正常工作在整个过程中都缺少一些东西,但是我不知道要使其正常工作我需要做什么。

0 个答案:

没有答案