SQLServer 郵件預(yù)警
創(chuàng)新互聯(lián)專注于秀洲網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供秀洲營(yíng)銷型網(wǎng)站建設(shè),秀洲網(wǎng)站制作、秀洲網(wǎng)頁(yè)設(shè)計(jì)、秀洲網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造秀洲網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供秀洲網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
問(wèn)題:
OA 系統(tǒng)向異構(gòu)系統(tǒng)推送待辦時(shí)偶爾會(huì)出現(xiàn)各種原因?qū)е峦扑褪。瑸榱吮苊鈫?wèn)題升級(jí),需要管理員第一時(shí)間知道推送失敗的情況,并手動(dòng)進(jìn)行干預(yù)。
問(wèn)題分析:
待辦推送狀態(tài)會(huì)記錄在OA 數(shù)據(jù)庫(kù)wx_scanlog 表中,當(dāng)resultstatus 狀態(tài)為-1 時(shí)表示待辦推送失敗。
解決方案:
一:SQLServer 觸發(fā)器
為了及時(shí)知道待辦推送失敗信息,可以使用SQLServer 觸發(fā)器,當(dāng)wx_scanlog 表中新增數(shù)據(jù)時(shí),校驗(yàn)resultstatus 狀態(tài)值,當(dāng)值為-1 時(shí),自動(dòng)發(fā)送郵件到指定郵箱。
二:Grafana 查看待辦狀態(tài)
通過(guò)Grafana 連接OA 數(shù)據(jù)庫(kù),指定時(shí)間間隔查看待辦狀態(tài),例如如下SQL :
select top 10 scantime , content , resultcontent from wx_scanlog where resultstatus =-1 order by scantime desc ;
一:SQLServer 觸發(fā)器
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms189635(v=sql.90)
過(guò)程如下:
-- 下面開(kāi)始配置 sql 發(fā)送電子郵件:
-- 啟用 sql server 郵件的功能
exec sp_configure 'show advanced options' ,1
go
reconfigure ;
go
-- 配置選項(xiàng) 'show advanced options' 已從 0 更改為 1 。請(qǐng)運(yùn)行 RECONFIGURE 語(yǔ)句進(jìn)行安裝。
exec sp_configure 'Database Mail XPs' ,1
go
reconfigure ;
go
-- 配置選項(xiàng) 'Database Mail XPs' 已從 0 更改為 1 。請(qǐng)運(yùn)行 RECONFIGURE 語(yǔ)句進(jìn)行安裝。
-- 使用下面的語(yǔ)句查看數(shù)據(jù)庫(kù)郵件功能是否開(kāi)啟成功和數(shù)據(jù)庫(kù)配置信息:
-- 查詢數(shù)據(jù)庫(kù)的配置信息
select * from sys . configurations
-- 查看數(shù)據(jù)庫(kù)郵件功能是否開(kāi)啟, value 值為 1 表示已開(kāi)啟, 0 為未開(kāi)啟
select name , value , description ,
is_dynamic , is_advanced
from sys . configurations
where name like '%mail%'
---name value description is_dynamic is_advanced
---Database Mail XPs 1 Enable or disable Database Mail XPs 1 1
-- 步驟二:
if exists( SELECT * FROM msdb .. sysmail_account WHERE NAME = 'chenmail' )
begin
EXEC msdb .. sysmail_delete_account_sp @account_name = 'chenmail'
end
exec msdb .. sysmail_add_account_sp -- 創(chuàng)建郵件賬戶
@account_name = 'cjcamail' -- 郵件帳戶名稱
, @email_address = 'chenjuchao163@163.com' -- 發(fā)件人郵件地址
, @display_name = 'chenjuchao' -- 發(fā)件人姓名
, @replyto_address = null -- 回復(fù)地址
, @description = null -- 郵件賬戶描述
, @mailserver_name = 'smtp.163.com' -- 郵件服務(wù)器地址
, @mailserver_type = 'SMTP' -- 郵件協(xié)議
, @port = 25 -- 郵件服務(wù)器端口
, @username = 'chenjuchao163' -- 用戶名
, @password = '**********' -- 密碼
, @use_default_credentials = 0 -- 是否使用默認(rèn)憑證, 0 為否, 1 為是
, @enable_ssl = 1 -- 是否啟用 ssl 加密, 0 為否, 1 為是
, @account_id = null -- 輸出參數(shù),返回創(chuàng)建的郵件賬戶的 ID
-- 步驟三:
if exists( SELECT * FROM msdb .. sysmail_profile where NAME = N'SendEmailProfile0323' ) -- 判斷名為 SendEmailProfile0323 的郵件配置文件是否存在
begin
exec msdb .. sysmail_delete_profile_sp @profile_name = 'SendEmailProfile0323' -- 刪除名為 SendEmailProfile0323 的郵件配置文件
end
exec msdb .. sysmail_add_profile_sp -- 添加郵件配置文件
@profile_name = 'SendEmailProfile0323' , -- 配置文件名稱
@description = ' 數(shù)據(jù)庫(kù)發(fā)送郵件配置文件 ' , -- 配置文件描述
@profile_id = NULL -- 輸出參數(shù),返回創(chuàng)建的郵件配置文件的 ID
-- 步驟四:
-- 郵件賬戶和郵件配置文件相關(guān)聯(lián)
exec msdb .. sysmail_add_profileaccount_sp
@profile_name = 'SendEmailProfile0323' , -- 郵件配置文件名稱
@account_name = 'chenmail' , -- 郵件賬戶名稱
@sequence_number = 1 -- account 在 profile 中的順序,一個(gè)配置文件可以有多個(gè)不同的郵件賬戶
-- 到這里 sql 發(fā)送郵件的配置就基本結(jié)束了。下面創(chuàng)建一個(gè)觸發(fā)器實(shí)現(xiàn)用戶注冊(cè)成功后,發(fā)送郵件給用戶。
-- 然后創(chuàng)建一個(gè) insert 類型的 after 觸發(fā)器:
create trigger undo_fail_cjc_tr
--alter trigger undo_fail_cjc_tr
on wx_scanlog
after insert
as
declare @errormsg nvarchar (1000 )
declare @resultcontent nvarchar (500 )
declare @content nvarchar (500 )
declare @title nvarchar (100 )
declare @xxx nvarchar (1000 )
declare @count int
declare @id int
select @count = COUNT (1 ) from inserted
select @id = id from inserted
select @resultcontent =( select CAST ( resultcontent as nvarchar (1000 )) from wx_scanlog where id = @id )
select @content =( select CAST ( content as nvarchar (1000 )) from wx_scanlog where id = @id )
set @xxx = 'content 標(biāo)題如下: ' + @content + CHAR ( 13 )+ 'resultcontent 內(nèi)容如下: ' + @resultcontent
--select @msgcode=msgcode,@errormsg=errormsg from inserted
-- if(@count>0)
if (( @count >0 ) and ( select resultstatus from inserted )= '-1' )
begin
set @title = 'OA( 正式系統(tǒng) ) 待辦推送 Eanar 失敗,請(qǐng)及時(shí)處理! '
exec msdb . dbo . sp_send_dbmail @profile_name = 'SendEmailProfile0323' , -- 郵件配置文件名稱
@recipients = 'cjc@xxx.com' , -- 郵件發(fā)送地址
@subject = 'OA( 正式系統(tǒng) ) 待辦推送 Eanar 失敗,請(qǐng)及時(shí)處理! ' , -- 郵件標(biāo)題
@body = @xxx , -- 郵件內(nèi)容
@body_format = 'text' -- 郵件內(nèi)容的類型, text 為文本,還可以設(shè)置為 html
end
go
-- 執(zhí)行上面的語(yǔ)句之后,大概兩三秒鐘,就會(huì)收到郵件了(如果沒(méi)有出現(xiàn)錯(cuò)誤的話)。如果沒(méi)有收到郵件可以使用下面的語(yǔ)句查看郵件發(fā)送情況。
use msdb
go
select * from sysmail_allitems -- 郵件發(fā)送情況,可以用來(lái)查看郵件是否發(fā)送成功
select * from sysmail_mailitems -- 發(fā)送郵件的記錄
select * from sysmail_event_log -- 數(shù)據(jù)庫(kù)郵件日志,可以用來(lái)查詢是否報(bào)錯(cuò)
郵件:
二:Grafana 查看待辦狀態(tài)
歡迎關(guān)注我的微信公眾號(hào)"IT小Chen",共同學(xué)習(xí),共同成長(zhǎng)!!!
網(wǎng)頁(yè)名稱:SQLServer郵件預(yù)警
分享地址:http://m.newbst.com/article16/gpiggg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、響應(yīng)式網(wǎng)站、Google、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)