2009-11-23 29 views
5

Deseo enviar un correo electrónico desde Trigger, en mi máquina SQL Server 2008. Los datos del correo electrónico serán, básicamente, parte de la información de Trigger.¿Puede un Trigger de SQL Server enviarme un correo electrónico?

¿Alguien puede proporcionar un código simple/muestra sobre cómo hacer esto, por favor? P.ej. ¿Cómo se llama el procedimiento almacenado en el sistema? Etc.

No he configurado ningún correo SQL y esas cosas, así que supongo que está integrado y puedo aprovecharlo. Pero solo para estar seguro: ¿necesito instalar algún software adicional en el servidor?

+0

Sip. [http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/](http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database /) – NitroxDM

+0

¿Puede usted? Sí. ¿Deberías? Absolutamente no, en mi humilde opinión. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx –

Respuesta

5

Este ejemplo envía un mensaje de correo electrónico a una persona específica (MaryM) cuando la tabla de títulos cambia.

USE pubs 
IF EXISTS (SELECT name FROM sysobjects 
     WHERE name = 'reminder' AND type = 'TR') 
    DROP TRIGGER reminder 
GO 
CREATE TRIGGER reminder 
ON titles 
FOR INSERT, UPDATE, DELETE 
AS 
    EXEC master..xp_sendmail 'MaryM', 
     'Don''t forget to print a report for the distributors.' 
GO 

Fuente: MSDN

3

Los disparadores deben mantenerse a un tiempo mínimo. Se debe permitir que las actualizaciones/inserciones/eliminaciones de la base de datos atómica sean lo más rápidas posible. Considere la posibilidad de agregar una tabla por separado para que el desencadenador pueda insertar datos en los que un proceso independiente supervisa e inicia un correo electrónico en función de los contenidos.

Por supuesto, esto no aborda si es posible o no usar TransactSQL para crear un correo electrónico. ¡Tengo curiosidad sobre eso yo mismo!

+0

Re: Disparadores - sí. Lo sé, etc., etc. Y esto es solo para eliminar ... y solo para algunos propósitos de depuración Y en algunas tablas de baja actividad Y el correo electrónico SQL es asíncrono, creo ... –

+0

Correo de la base de datos, pero SQLMail y otras variantes (especialmente utilizando CDO a través de sp_OA) no lo son. En su pregunta original, no dijo que estaba usando el correo de la base de datos, realmente dijo el correo SQL. Existe una gran diferencia. En cualquier caso, incluso si está utilizando el correo de la base de datos en su sistema actual, ¿qué sucede si mueve su código a otro sistema donde no puede usar el correo de la base de datos por algún motivo? –

Cuestiones relacionadas