SQL 邮件配置篇

在我们运维工作中,经常要对备份,ETL等作业进行监控,这时我们需要用到SQL SERVER自带的邮件服务器,其原理,我在这么里不多说,直接来实战,下面是我对服务器配置源码,分享给大家,希望对大家有帮助。

exec sp_configure ‘show advanced options‘,1
RECONFIGURE WITH OVERRIDE
go
exec sp_configure ‘database mail xps‘,1
RECONFIGURE WITH OVERRIDE
go

--2.创建邮件帐户信息
EXEC msdb..Sysmail_add_account_sp
  @ACCOUNT_NAME =‘OCTMamiETL‘,-- 邮件帐户名称
  @EMAIL_ADDRESS =‘[email protected]‘,-- 发件人邮件地址
  @DISPLAY_NAME =‘系统管理员‘,-- 发件人姓名
  @REPLYTO_ADDRESS =NULL,
  @DESCRIPTION = NULL,
  @MAILSERVER_NAME = ‘SMTP.163.COM‘,-- 邮件服务器地址
  @MAILSERVER_TYPE = ‘SMTP‘,-- 邮件协议
  @PORT =25,-- 邮件服务器端口
  @USERNAME = ‘[email protected]‘,-- 用户名
  @PASSWORD = ‘ABC123‘,-- 密码
  @USE_DEFAULT_CREDENTIALS =0,
  @ENABLE_SSL =0,
  @ACCOUNT_ID = NULL

GO

--3.数据库配置文件
IF EXISTS(SELECT name
          FROM   msdb..sysmail_profile
          WHERE  name = N‘ETLErrorProfileLog‘)
  BEGIN
      EXEC msdb..Sysmail_delete_profile_sp @profile_name=‘ETLErrorProfileLog‘
  END

EXEC msdb..Sysmail_add_profile_sp
  @profile_name = ‘ETLErrorProfileLog‘,-- profile 名称
  @description = ‘数据库邮件配置文件‘,-- profile 描述
  @profile_id = NULL

go

--4.用户和邮件配置文件相关联
EXEC msdb..Sysmail_add_profileaccount_sp
  @profile_name = ‘ETLErrorProfileLog‘,-- profile 名称
  @account_name = ‘OCTMamiETL‘,-- account 名称
  @sequence_number = 1 -- account 在 profile 中顺序
--5.发送文本测试邮件
EXEC msdb..Sp_send_dbmail
  @profile_name=‘ETLErrorProfileLog‘,
  @recipients=‘[email protected]‘,--收件人
  @subject=‘Test title this is test ‘,
  @body=N‘z中文邮件内容  中文邮件内容‘

go

-----------------------------------------------------------------------------------
/*
    功能说明:启用警报系统里面的邮件配置
    参数说明: xp_instance_regwrite 修改注册表
*/
EXEC msdb.dbo.Sp_set_sqlagent_properties @email_save_in_sent_folder=1

EXEC master.dbo.Sp_mssetalertinfo @pagersendsubjectonly = 0 --启用警报系统 【在通知消息中包含电子邮件的正文】

EXEC master.dbo.Xp_instance_regread
  N‘HKEY_LOCAL_MACHINE‘,--启用警报系统 【启用邮件配置文件】
  N‘SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent‘,
  N‘DatabaseMailProfile‘ ---邮件系统【选择数据库邮件】

EXEC master.dbo.Xp_instance_regwrite
  N‘HKEY_LOCAL_MACHINE‘,
  N‘SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent‘,
  N‘UseDatabaseMail‘,
  N‘REG_DWORD‘,
  1

EXEC master.dbo.Xp_instance_regwrite
  N‘HKEY_LOCAL_MACHINE‘,--启用警报系统 【启用邮件配置文件】
  N‘SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent‘,
  N‘DatabaseMailProfile‘,---邮件系统【选择数据库邮件】
  N‘REG_SZ‘,
  ‘ETLErrorProfileLog‘ ---邮件配置文件【邮件配置里面的SQLMailProfile】   

-----------------------------------------------------------------------------------
DECLARE @Sys_OperatorsName VARCHAR(100)

SET @Sys_OperatorsName=‘BSMicheal‘

IF EXISTS (SELECT name
           FROM   msdb.dbo.sysoperators
           WHERE  name = @Sys_OperatorsName)
  BEGIN
      EXEC msdb..Sp_delete_operator @name = @Sys_OperatorsName -- 操作员
  END

EXEC 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 = ‘[email protected]‘,-----仅可以对 SQL Mail 使用电子邮件别名。必须对数据库邮件使用电子邮件地址。
  @pager_address = N‘‘,
  @netsend_address = N‘‘

/*
    功能说明: 在Job中添加操作员的操作
    参数说明:  @notify_level_email指定何时将该作业的项放入 Microsoft Windows 应用程序日志。
               eventlog_level 的数据类型为 int 【0 从不 1 成功时 2 失败时 3 始终】
    修改说明:Create by LY on 2011-010-10
*/
IF EXISTS (SELECT 1
           FROM   msdb.dbo.sysjobs
           WHERE  name = ‘dad‘)
  BEGIN
      EXEC msdb.dbo.Sp_update_job
        @job_name = ‘dad‘,---对应的作业名称
        @notify_level_email = 2,
        @notify_level_netsend = 2,
        @notify_level_page = 2,
        @notify_email_operator_name = ‘BSMicheal‘ ---对应的操作员
  END; 

当然,在配置过程中会遇到很多奇葩问题,我在这暂时不穷举了,总之一点,明白配置步骤,问题都不大,下面我说一下我觉得比较重要一个方面,权限控制,很容易被人忽略,因为我们数据库服务器不是本人配置,在配置的时候权限分配的不是到位,所以配置这个邮件服务功能有点曲折。

当我们调用作业用操作员发送的时候,发现怎么都发送不出去,后来在调试邮件中我发现了这行信息:

我就考虑到是不是该用户的权限不够,按照我正常的运维经验来看的话,配置SQL SERVER的时候这个用户所属的角色应该包含SYSADMIN这个的,所以我查看了该用户所属权限,果然,角色分配不对,后将其调整,作业可以正常发送邮件了。

时间: 2024-10-07 15:54:54

SQL 邮件配置篇的相关文章

SQL Server : 配置Mail发送邮件,并且让Job的邮件提示更详尽

配置邮件服务 1. Management 目录里面右击 Database Mail 2. 第一个配置选择第一项 以qq邮箱为例 确认后保存.然后点击下一步,直到完成. 发送测试邮件 收到邮件以后可以进行Job的设置 JOB邮件配置 方法一: 新增Operator 配置好确认, 然后打开SQL Server Agent的属性面板 启用Mail 配置 新建一个Job,在通知里面点击电子邮件,选择刚才创建的操作员.DataCenter, 保存. 至此方法一配置结束. 方法二 虽然方法一配置简单,但是每

MyBatis框架中Mapper映射配置的使用及原理解析(三) 配置篇 Configuration

从上文<MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder> 我们知道XMLConfigBuilder调用parse()方法解析Mybatis配置文件,生成Configuration对象. Configuration类主要是用来存储对Mybatis的配置文件及mapper文件解析后的数据,Configuration对象会贯穿整个Mybatis的执行流程,为Mybatis的执行过程提供必要的配

HAproxy负载均衡-配置篇

安装HAProxy及环境配置 红帽的yum源已经为我们提供了最新版本的haproxy,所以我们只需要yum安装即可 [[email protected] ~]# yum install haproxy -y 配置haproxy的日志 编辑rsyslog [[email protected] haproxy]# vim /etc/rsyslog.conf 将以下参数开启 $ModLoad imudp $UDPServerRun 514 加入参数: *.info;mail.none;authpriv

实战Nagios NSCA方式监控Linux系统资源使用情况 -- Nagios配置篇 -- 被监控端

Nagios要求被监控端按照约定格式定时将数据发送到Nagios端.监控包括节点和服务2种. 节点监控约定数据格式如下: [<timestamp>] PROCESS_HOST_CHECK_RESULT;<host_name>;<host_status>;<plugin_output> 格式很容易理解,数据提交时间戳,被监控节点名称,节点状态(UP/DOWN/UNREARCHABLE),插件自定义的额外数据.状态具体每个字段的解释如下: 1. timestam

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe

如何防范SQL注入——测试篇(转)

在上一篇文章<如何防范SQL注入-编程篇>中,我们讲了对于程序员而言,如何编码以防范代码存在SQL注入漏洞,那么,对于测试人员来说,如何测试SQL注入漏洞是否存在呢? 首先,我们将SQL注入攻击能分为以下三种类型: Inband:数据经由SQL代码注入的通道取出,这是最直接的一种攻击,通过SQL注入获取的信息直接反映到应用程序的Web页面上: Out-of-band:数据通过不同于SQL代码注入的方式获得(譬如通过邮件等) 推理:这种攻击是说并没有真正的数据传输,但攻击者可以通过发送特定的请求

MSSQLSERVER数据库- 配置数据库邮件配置的操作过程

还是第一次发现数据库可以发邮件.查了一下百度,试了一下,发现可以. 1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案.通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中可以包含查询结果,还可以包含来自网络中任何资源的文件. 无需 Microsoft Outlook 或扩展消息处理应用程序编程接口(扩展 MAPI).数据库邮件使用标准的简单邮件传输协议 (SMTP) 发送邮件.无须在运行 SQL S

NetBpm 配置篇(2)

转载注明出处:http://www.cnblogs.com/anbylau2130/p/3877353.html 上一篇中介绍了Netbpm在IIS和CassiniWebServer服务器的安装 通过上节的配置应该可以打开主页了 到这里要说的是数据库配置了 1,修改数据库连接 Netbpm下数据库映射是通过NHibernate来实现的,目录中 app_config.xml是NHibernate的配置文件 <configuration> <components> <!-- Th

Exchange 2016部署实施案例篇-04.Ex基础配置篇(中)

昨天更新了基础配置的上篇<Exchange 2016部署实施案例篇-04.Ex基础配置篇(上)>,欢迎各位老铁多多提出宝贵意见,非常感谢. 虚拟目录 自动发现配置 有的朋友可能知道,虽然在虚拟目录里有自动发现这个选项,但自动发现记录在图形化界面无法配置自动发现地址,如图所示 其实自动发现路径需要使用命令修改,我们先查下现在的自动发现写的是什么鬼 查看自动发现配置情况命令:Get-ClientAccessService | select Name,AutoDiscoverServiceInter