Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
Как написать триггер для отправки писем по событию?
Есть определенный поток операций.
Каждая операция имеет статус хранимый в таблице А
В таблице В храниться мыло владельца шага потока операций.
Как написать тригер чтобы он отправлял письмо владельцу потока операций при изменении статуса шага потока операций.
8 сен 09, 17:52    [7633260]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Glory
Member

Откуда:
Сообщений: 104760
Т.е. вы уже настроили SQLMail или Database Mail ? Убедились, что они работают ? И теперь спрашиваете, какой системной процедурой отправлять мэйлы ?

Или вы вообще не знаете, как создаются триггера в MSSQL ?
8 сен 09, 17:58    [7633304]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
san_d
Member

Откуда: Киев
Сообщений: 60
навесить триггер на апдейт на таблицу A. Письма лучше, наверно сразу при апдейте не отправлять, сделать еще таблицу С, в которую триггер будет инсертить что-то вроде очереди сообщений. Потом джобом проходится по таблицу С и рассылать письма.
Я хранимкой пользуюсь для этого дела
8 сен 09, 18:01    [7633324]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
Glory
Т.е. вы уже настроили SQLMail или Database Mail ? Убедились, что они работают ? И теперь спрашиваете, какой системной процедурой отправлять мэйлы ?

Или вы вообще не знаете, как создаются триггера в MSSQL ?


SQLMail или Database Mail я не настраивал. Допустил что они работают нормально.
Принцип триггеров понимаю, но чтобы писать - то не писал.
Буду рад увидеть код тригера для этой задачи и советы как можно проверить работоспособность SQLMail или Database Mail.
8 сен 09, 18:24    [7633444]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
san_d
навесить триггер на апдейт на таблицу A. Письма лучше, наверно сразу при апдейте не отправлять, сделать еще таблицу С, в которую триггер будет инсертить что-то вроде очереди сообщений. Потом джобом проходится по таблицу С и рассылать письма.
Я хранимкой пользуюсь для этого дела


А как же насчет MS SQL 2005 процедура вроде только для 2000 и 7 сервера?
8 сен 09, 18:26    [7633454]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
Guest__2009
san_d
навесить триггер на апдейт на таблицу A. Письма лучше, наверно сразу при апдейте не отправлять, сделать еще таблицу С, в которую триггер будет инсертить что-то вроде очереди сообщений. Потом джобом проходится по таблицу С и рассылать письма.
Я хранимкой пользуюсь для этого дела


А как же насчет MS SQL 2005 процедура вроде только для 2000 и 7 сервера?

проверьте настроена ли у вас "Компонент Database Mail"
http://msdn.microsoft.com/ru-ru/library/ms175887.aspx
8 сен 09, 18:32    [7633497]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
для 2005
http://msdn.microsoft.com/ru-ru/library/ms175887(SQL.90).aspx
8 сен 09, 18:34    [7633506]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
san_d
Member

Откуда: Киев
Сообщений: 60
Guest__2009

А как же насчет MS SQL 2005 процедура вроде только для 2000 и 7 сервера?

Вроде бы есть аналогичная процедура для 2005, но она вроде платная. Точно не подскажу, сорь, я все еще на 2000м сижу:)
Может и эта будет работать в 2005..
8 сен 09, 18:34    [7633508]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
Всем спасибо за предидущие ответы.
Вообщем наковырял тут по сусекам, а как собрать вместе даже не представляю.
Кто подскажет, как это можно написать.

Условия для вызова триггера
В таблице А Поле status приняло значение «3»
При этом значении надо отправить письмо пользователю адрес которого находиться в таблице B поле email.

сREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name> 
   ON  <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name> 
   AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for trigger here

END
GO

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'AdventureWorks Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @body = 'The stored procedure finished successfully.',
    @subject = 'Automated Success Message' ;


Как это теперь собрать вместе???
10 сен 09, 13:53    [7641991]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Glory
Member

Откуда:
Сообщений: 104760
сREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name> 
   ON  <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name> 
   AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'AdventureWorks Administrator',
    @recipients = 'danw@Adventure-Works.com',
    @body = 'The stored procedure finished successfully.',
    @subject = 'Automated Success Message' ;
END
GO
10 сен 09, 13:56    [7642018]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
Guest__2009,

и не забудьте, используя пост Glory, вставить перед отправкой условие проверки типа ЕСЛИ В таблице А Поле status приняло значение «3»
10 сен 09, 14:00    [7642058]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
PaulYoung,
Вообще без руля, как это сделать??
Надо же еще подставить email из таблицы В...
10 сен 09, 15:18    [7642832]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Glory
Member

Откуда:
Сообщений: 104760
Guest__2009

Надо же еще подставить email из таблицы В...

Т.е. вы даже не знаете, как считать значение поля в переменную ?
10 сен 09, 15:19    [7642837]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
guest__2009
Guest
Glory, это точно.. даже чайником не назавусь
10 сен 09, 16:02    [7643151]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Glory
Member

Откуда:
Сообщений: 104760
guest__2009
Glory, это точно.. даже чайником не назавусь

Ну так начните изучение синтаксиса с азов. Постепенно дойдете и до триггеров
10 сен 09, 16:05    [7643176]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
Glory, где можно качнуть документацию вразумительную???
10 сен 09, 16:28    [7643379]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
san_d
Member

Откуда: Киев
Сообщений: 60
Guest__2009,
ну, с таким вопросом вас, наверно, сейчас в BOL пошлют как минимум :)
10 сен 09, 16:56    [7643613]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Guest__2009
Guest
Glory
Guest__2009

Надо же еще подставить email из таблицы В...

Т.е. вы даже не знаете, как считать значение поля в переменную ?


USE AdventureWorks;
GO
IF OBJECT_ID ('Sales.reminder2','TR') IS NOT NULL
    DROP TRIGGER Sales.reminder2;
GO
CREATE TRIGGER reminder2
ON Sales.Customer
AFTER INSERT, UPDATE, DELETE 
AS
   EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'AdventureWorks Administrator',
        @recipients = 'danw@Adventure-Works.com',
        @body = 'Don''t forget to print a report for the sales force.',
        @subject = 'Reminder';
GO
Ну вот что-то похожее нашел!!
Вопрос для чего нужна эта строка "USE AdventureWorks";
10 сен 09, 17:33    [7643873]     Ответить | Цитировать Сообщить модератору
 Re: Как написать триггер для отправки писем по событию  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Guest__2009,

указание в контеске какой БД будет выполняться операция
10 сен 09, 18:17    [7644235]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить