回答
解決方案1 - 使用sp_send_dbmail
下面是創建將在INSERT/UPDATE/DELETE事件的電子郵件出現在一個特定的表的觸發器的例子:
USE AdventureWorks2008R2;
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 = 'AdventureWorks2008R2 Administrator',
@recipients = '[email protected]',
@body = 'Don''t forget to print a report for the sales force.',
@subject = 'Reminder';
GO
來源:http://msdn.microsoft.com/en-us/library/ms189799.aspx
sp_send_dbmail
是在SQL Server 2005引入了更多信息:http://msdn.microsoft.com/en-us/library/ms190307.aspx
注:
使用前,數據庫郵件必須使用數據庫郵件 配置嚮導,在SQL Server外圍應用配置工具, 或sp_configure的啓用。
解決方案2 - 使用xp_cmdshell的
如果不能建立數據庫郵件你有另一種選擇:xp_cmdshell
。 有了它,您可以在SQL語句中運行命令行命令,例如一個小郵件發送工具。
這個人是一個小例子如何發送使用System.Net.Mail
電子郵件在C#應用程序:http://weblogs.asp.net/scottgu/archive/2005/12/10/432854.aspx
如何使用xp_cmdshell
:http://msdn.microsoft.com/en-us/library/aa260689%28v=sql.80%29.aspx
所以你創建一個發送電子郵件一小C#控制檯應用程序,然後你執行它與您的SQL語句中的xp_cmdshell
正好相反。
解決方案3 - 使用Windows服務(他想)
Windows服務本身並不能確定是否行獲取的MSSQL數據庫更新。您需要記錄更改。爲此,您可以創建一個特定表的觸發器來記錄更改。通過記錄改變我的意思是插入新行到log
表withing觸發這樣的:
USE MyDatabase;
GO
IF OBJECT_ID ('Products.TRRowUpdated','TR') IS NOT NULL
DROP TRIGGER Products.TRRowUpdated;
GO
CREATE TRIGGER TRRowUpdated
ON Products
AFTER INSERT, UPDATE, DELETE
AS
INSERT INTO log ('Message', 'Date') VALUES ('Products table got modified', GETTIME())
GO
創建一個Windows服務項目是爲創建使用Visual Studio控制檯應用程序一樣簡單。
然後,您的服務將像每分鐘一樣讀取「日誌」表,並在其中存在任何行時發送電子郵件(並且當然會刪除它們)。
可以確定發生了哪種更改:INSERT,UPDATE或DELETE。有關更多詳細信息,請參閱此網站上的評論:http://msdn.microsoft.com/en-us/library/ms189799.aspx
- 1. 當數據庫更新時自動向用戶發送電子郵件
- 2. 更新數據庫時自動發送給管理員的電子郵件
- 3. 我想要一個Grails服務來自動發送電子郵件?
- 4. 如何在MySQL數據庫中更新值時自動發送電子郵件
- 5. 當用戶創建一個目錄時發送電子郵件
- 6. SQL服務器:發送電子郵件
- 7. 更好的方式來自動發送電子郵件數據驅動的Sql Server報告服務報告?
- 8. 當新數據插入特定條件時自動發送電子郵件
- 9. 一個Windows Web服務器不發送電子郵件,
- 10. 自動更改發送電子郵件
- 11. 每1小時發送一次SQL服務器電子郵件
- 12. 當用戶輸入電子郵件地址時自動發送電子郵件
- 13. 發送電子郵件從數據庫
- 14. 發送電子郵件「從數據庫」
- 15. 從某個電子郵件發送來自SMTP服務器的電子郵件,但使其看起來好像來自另一封電子郵件
- 16. 如何創建電子郵件發送服務?
- 17. 當文件生成時自動發送電子郵件
- 18. 我想與多個數據庫發送電子郵件值
- 19. 當我創建一個新的數據庫時更改MongoDB sizeOnDisk
- 20. 選擇電子郵件發送服務
- 21. 只發送電子郵件服務器
- 22. 同時更新SQL表遞歸發送電子郵件
- 23. 在存儲在數據庫中的自動時間發送電子郵件
- 24. 如何在vb.net中創建自動發送電子郵件?
- 25. 來自用戶帳戶數據庫的自動電子郵件
- 26. 創建併發送Outlook電子郵件
- 27. 來自Windows服務的電子郵件附件
- 28. 無法從Win7上的Windows服務發送SMTP電子郵件
- 29. 發送帶有windows服務的提醒電子郵件
- 30. 當使用ColdFusion加載頁面時發送自動發送的電子郵件
爲什麼選擇windows服務?爲什麼不用DDL或DML觸發器? – 2012-02-06 07:39:56
你是什麼意思「更新」?當一行更新時?插入了一個新行?要不然? – papaiatis 2012-02-06 07:42:22
**什麼**數據庫系統,以及哪個版本? ** SQL **只是結構化查詢語言(Structured Query Language) - 許多數據庫系統使用的語言 - SQL是** NOT **數據庫產品......類似這樣的東西通常是供應商特定的 - 所以我們真的需要知道什麼您正在使用的數據庫系統.... – 2012-02-06 07:44:25