Как определить, когда срабатывает триггер? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть проект, в котором я должен отправить электронное письмо своему клиенту при покупке продукта. Я разговаривал с другими разработчиками, и мы пришли к выводу, что есть 3 основных шага для выполнения sh этого проекта:

  1. Создание триггера, который будет срабатывать при вставке данных в таблица продаж;
  2. Создание службы Windows для «мониторинга» при запуске этого триггера;
  3. Приложение WinForms для отправки электронного письма.

I знаете, как отправить электронное письмо через приложение WinForms, так что шаг 3 в порядке. Я прочитал о Service Broker и включил его в своей базе данных. Кроме того, я создал триггер для отправки сообщения через Service Broker при вставке или обновлении данных. Я следовал этому учебнику и придумал этот триггер:

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

Кроме того, я нашел код Windows Сервисного проекта на странице Microsoft GitHub. Я установил службу на своем компьютере, а затем вставил некоторые данные в таблицу продаж, но ничего не произошло. Я думал об отправке электронного письма прямо на триггер (используя sp_send_dbmail), но у меня нет необходимого разрешения для этого. Я думаю, что во всем процессе чего-то не хватает, чтобы заставить его работать, но я понятия не имею, что мне нужно сделать, чтобы это работало должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...