2009-11-23 123 views
5

我希望在我的SQL Server 2008計算機上發送來自Trigger的電子郵件。電子郵件的數據基本上是一些觸發信息。SQL Server觸發器可以給我發電子郵件嗎?

有人可以提供一些簡單的/示例代碼如何做到這一點,請嗎?例如。系統存儲過程稱爲什麼?等

我還沒有設置任何SQL郵件和東西,所以我猜它是內置的,我可以利用它。但要確定的是:我需要在服務器上安裝任何額外的軟件嗎?

+0

沒錯。 [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 2009-11-23 00:07:33

+0

你能嗎?是。你應該?絕對不是,恕我直言。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx – 2009-11-23 01:12:30

回答

5

本示例在titles表更改時向指定人員(MaryM)發送電子郵件消息。

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 

來源:MSDN

3

觸發器應保持最短時間。應允許原子數據庫更新/插入/刪除儘可能快。考慮添加一個單獨的表,觸發器可以將數據插入其中,單獨的進程根據內容監視並啓動電子郵件。

當然,這並不涉及是否可以使用TransactSQL來創建電子郵件 - 我很好奇自己的那個!

+0

Re:觸發器 - 是的。我知道,等等等等,這只是爲了刪除..只爲了一些調試的目的和一些低活動表和SQL電子郵件是異步的,我相信.. – 2009-11-23 00:11:21

+0

數據庫郵件是,但SQLMail和其他變種(特別是通過sp_OA使用CDO)不是。在你原來的問題中,你沒有說你正在使用數據庫郵件,你實際上是在說SQL郵件。有一個很大的不同。在任何情況下,即使您在當前系統上使用數據庫郵件,如果您將代碼移動到另一個系統,出於某種原因您不能使用數據庫郵件,該怎麼辦? – 2009-11-23 13:41:40