SQL server 表數(shù)據(jù)改變觸發(fā)發(fā)送郵件的方法
今天遇到一個問題,原有生產(chǎn)系統(tǒng)正在健康運行,現(xiàn)需要監(jiān)控一張數(shù)據(jù)表,當(dāng)增加數(shù)據(jù)的時候,給管理員發(fā)送郵件。
領(lǐng)到這個需求后,有同事提供方案:寫觸發(fā)器觸發(fā)外部應(yīng)用程序。這是個大膽的想法啊,從來沒寫過這樣的觸發(fā)器。
以下是參考文章:
第一種方法: 觸發(fā)器調(diào)用外部程序。 xp_cmdshell
http://www.dhdzp.com/article/90714.htm 第一篇提供的方法是需要開啟xp_cmdshell
先開啟xp_cmdshell
打開外圍應(yīng)用配置器—>
功能的外圍應(yīng)用配置器—>
實例名\Database Engine\xp_cmdshell—>
啟用
然后可以調(diào)用外部程序:Exec xp_cmdshell 'c:\calc.exe' 。
第二種方法:將插入的值傳給.bat 。同樣使用調(diào)用外部程序的 xp_cmdshell 的權(quán)限
其實第二種方法可以歸為第一種。
下面說說第三種方法:
SQL servere CLR
這種方法可以利用VS給sql server 寫存儲過程和觸發(fā)器。打開了VS不愁寫代碼給管理員發(fā)email。
第四種方法:
SQL server Management -->Database Mail
開啟Database Mail 之后,配制好發(fā)郵件的設(shè)置,直接寫觸發(fā)器就可以把插入的內(nèi)容通過sql server 發(fā)送出來了。
Create TRIGGER tri_email ON [dbo].[ImageGalleries] AFTER insert AS BEGIN if exists(select * from inserted) begin declare @content nvarchar(max) select @content=i.Name+'|'+i.ImagePath from inserted i; exec msdb.dbo.sp_send_dbmail @profile_name='SQLProfile', @recipients=243594541@qq.com', @subject='sql server send email by trigger', @body=@content end END GO
這種方法是最直接最簡便的方法。
相關(guān)文章
SQL窗口函數(shù)之聚合窗口函數(shù)的使用(count,max,min,sum)
許多常見的聚合函數(shù)也可以作為窗口函數(shù)使用,包括AVG()、SUM()、COUNT()、MAX()以及MIN()等函數(shù),本文就詳細的介紹了SQL窗口函數(shù)之聚合窗口函數(shù)的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
一次SQL查詢優(yōu)化原理分析(900W+數(shù)據(jù)從17s到300ms)
本文主要介紹了一次SQL查詢優(yōu)化原理分析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
SQLServer用t-sql命令批量刪除數(shù)據(jù)庫中指定表(游標(biāo)循環(huán)刪除)
這篇文章主要介紹了SQLServer用t-sql命令批量刪除數(shù)據(jù)庫中指定表的方法,大家參考使用2013-11-11
SQL Server行列轉(zhuǎn)換的實現(xiàn)示例
在使用SQL Server數(shù)據(jù)庫的過程中我們經(jīng)常會遇到需要將行數(shù)據(jù)和列數(shù)據(jù)相互轉(zhuǎn)換顯示的問題,本文就來介紹一下,具有一定的參考價值,感興趣的可以了解一下2023-09-09

