SQL 邮件配置篇
在我們運(yùn)維工作中,經(jīng)常要對(duì)備份,ETL等作業(yè)進(jìn)行監(jiān)控,這時(shí)我們需要用到SQL SERVER自帶的郵件服務(wù)器,其原理,我在這么里不多說(shuō),直接來(lái)實(shí)戰(zhàn),下面是我對(duì)服務(wù)器配置源碼,分享給大家,希望對(duì)大家有幫助。
exec sp_configure 'show advanced options',1 RECONFIGURE WITH OVERRIDE go exec sp_configure 'database mail xps',1 RECONFIGURE WITH OVERRIDE go--2.創(chuàng)建郵件帳戶(hù)信息 EXEC msdb..Sysmail_add_account_sp@ACCOUNT_NAME ='OCTMamiETL',-- 郵件帳戶(hù)名稱(chēng) @EMAIL_ADDRESS ='OCTMamiETL@163.com',-- 發(fā)件人郵件地址 @DISPLAY_NAME ='系統(tǒng)管理員',-- 發(fā)件人姓名 @REPLYTO_ADDRESS =NULL,@DESCRIPTION = NULL,@MAILSERVER_NAME = 'SMTP.163.COM',-- 郵件服務(wù)器地址 @MAILSERVER_TYPE = 'SMTP',-- 郵件協(xié)議 @PORT =25,-- 郵件服務(wù)器端口 @USERNAME = 'OCTMamiETL@163.com',-- 用戶(hù)名 @PASSWORD = 'ABC123',-- 密碼 @USE_DEFAULT_CREDENTIALS =0,@ENABLE_SSL =0,@ACCOUNT_ID = NULLGO--3.數(shù)據(jù)庫(kù)配置文件 IF EXISTS(SELECT nameFROM msdb..sysmail_profileWHERE name = N'ETLErrorProfileLog')BEGINEXEC msdb..Sysmail_delete_profile_sp @profile_name='ETLErrorProfileLog'ENDEXEC msdb..Sysmail_add_profile_sp@profile_name = 'ETLErrorProfileLog',-- profile 名稱(chēng) @description = '數(shù)據(jù)庫(kù)郵件配置文件',-- profile 描述 @profile_id = NULLgo--4.用戶(hù)和郵件配置文件相關(guān)聯(lián) EXEC msdb..Sysmail_add_profileaccount_sp@profile_name = 'ETLErrorProfileLog',-- profile 名稱(chēng) @account_name = 'OCTMamiETL',-- account 名稱(chēng) @sequence_number = 1 -- account 在 profile 中順序 --5.發(fā)送文本測(cè)試郵件 EXEC msdb..Sp_send_dbmail@profile_name='ETLErrorProfileLog',@recipients='OCTMamiETL@163.com',--收件人@subject='Test title this is test ',@body=N'z中文郵件內(nèi)容 中文郵件內(nèi)容'go----------------------------------------------------------------------------------- /*功能說(shuō)明:啟用警報(bào)系統(tǒng)里面的郵件配置參數(shù)說(shuō)明: xp_instance_regwrite 修改注冊(cè)表 */ EXEC msdb.dbo.Sp_set_sqlagent_properties @email_save_in_sent_folder=1EXEC master.dbo.Sp_mssetalertinfo @pagersendsubjectonly = 0 --啟用警報(bào)系統(tǒng) 【在通知消息中包含電子郵件的正文】EXEC master.dbo.Xp_instance_regreadN'HKEY_LOCAL_MACHINE',--啟用警報(bào)系統(tǒng) 【啟用郵件配置文件】N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',N'DatabaseMailProfile' ---郵件系統(tǒng)【選擇數(shù)據(jù)庫(kù)郵件】EXEC master.dbo.Xp_instance_regwriteN'HKEY_LOCAL_MACHINE',N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',N'UseDatabaseMail',N'REG_DWORD',EXEC master.dbo.Xp_instance_regwriteN'HKEY_LOCAL_MACHINE',--啟用警報(bào)系統(tǒng) 【啟用郵件配置文件】N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent',N'DatabaseMailProfile',---郵件系統(tǒng)【選擇數(shù)據(jù)庫(kù)郵件】N'REG_SZ','ETLErrorProfileLog' ---郵件配置文件【郵件配置里面的SQLMailProfile】 ----------------------------------------------------------------------------------- DECLARE @Sys_OperatorsName VARCHAR(100)SET @Sys_OperatorsName='BSMicheal'IF EXISTS (SELECT nameFROM msdb.dbo.sysoperatorsWHERE name = @Sys_OperatorsName)BEGINEXEC msdb..Sp_delete_operator @name = @Sys_OperatorsName -- 操作員ENDEXEC msdb.dbo.Sp_add_operator@name = @Sys_OperatorsName,@enabled = 1,@weekday_pager_start_time = 90000,@weekday_pager_end_time = 180000,@saturday_pager_start_time = 90000,@saturday_pager_end_time = 180000,@sunday_pager_start_time = 90000,@sunday_pager_end_time = 180000,@pager_days = 127,@email_address = 'OCTMamiETL@163.com',-----僅可以對(duì) SQL Mail 使用電子郵件別名。必須對(duì)數(shù)據(jù)庫(kù)郵件使用電子郵件地址。@pager_address = N'',@netsend_address = N''/*功能說(shuō)明: 在Job中添加操作員的操作參數(shù)說(shuō)明: @notify_level_email指定何時(shí)將該作業(yè)的項(xiàng)放入 Microsoft Windows 應(yīng)用程序日志。eventlog_level 的數(shù)據(jù)類(lèi)型為 int 【0 從不 1 成功時(shí) 2 失敗時(shí) 3 始終】 修改說(shuō)明:Create by LY on 2011-010-10 */ IF EXISTS (SELECT 1FROM msdb.dbo.sysjobsWHERE name = 'dad')BEGINEXEC msdb.dbo.Sp_update_job@job_name = 'dad',---對(duì)應(yīng)的作業(yè)名稱(chēng)@notify_level_email = 2,@notify_level_netsend = 2,@notify_level_page = 2,@notify_email_operator_name = 'BSMicheal' ---對(duì)應(yīng)的操作員END;?
當(dāng)然,在配置過(guò)程中會(huì)遇到很多奇葩問(wèn)題,我在這暫時(shí)不窮舉了,總之一點(diǎn),明白配置步驟,問(wèn)題都不大,下面我說(shuō)一下我覺(jué)得比較重要一個(gè)方面,權(quán)限控制,很容易被人忽略,因?yàn)槲覀償?shù)據(jù)庫(kù)服務(wù)器不是本人配置,在配置的時(shí)候權(quán)限分配的不是到位,所以配置這個(gè)郵件服務(wù)功能有點(diǎn)曲折。
當(dāng)我們調(diào)用作業(yè)用操作員發(fā)送的時(shí)候,發(fā)現(xiàn)怎么都發(fā)送不出去,后來(lái)在調(diào)試郵件中我發(fā)現(xiàn)了這行信息:
我就考慮到是不是該用戶(hù)的權(quán)限不夠,按照我正常的運(yùn)維經(jīng)驗(yàn)來(lái)看的話(huà),配置SQL SERVER的時(shí)候這個(gè)用戶(hù)所屬的角色應(yīng)該包含SYSADMIN這個(gè)的,所以我查看了該用戶(hù)所屬權(quán)限,果然,角色分配不對(duì),后將其調(diào)整,作業(yè)可以正常發(fā)送郵件了。
轉(zhuǎn)載于:https://www.cnblogs.com/roboot/p/6213990.html
總結(jié)
- 上一篇: BZOJ 1878: [SDOI2009
- 下一篇: MYSQL远程登录权限设置 ,可以让Na