У меня есть проект, в котором я должен отправить электронное письмо своему клиенту при покупке продукта. Я разговаривал с другими разработчиками, и мы пришли к выводу, что есть 3 основных шага для выполнения sh этого проекта:
- Создание триггера, который будет срабатывать при вставке данных в таблица продаж;
- Создание службы Windows для «мониторинга» при запуске этого триггера;
- Приложение 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
), но у меня нет необходимого разрешения для этого. Я думаю, что во всем процессе чего-то не хватает, чтобы заставить его работать, но я понятия не имею, что мне нужно сделать, чтобы это работало должным образом.