在我们运维工作中,经常要对备份,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 ='OCTMamiETL@163.com',-- 发件人邮件地址
@DISPLAY_NAME ='系统管理员',-- 发件人姓名
@REPLYTO_ADDRESS =NULL,
@DESCRIPTION = NULL,
@MAILSERVER_NAME = 'SMTP.163.COM',-- 邮件服务器地址
@MAILSERVER_TYPE = 'SMTP',-- 邮件协议
@PORT =25,-- 邮件服务器端口
@USERNAME = 'OCTMamiETL@163.com',-- 用户名
@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='OCTMamiETL@163.com',--收件人
@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 = 'OCTMamiETL@163.com',-----仅可以对 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这个的,所以我查看了该用户所属权限,果然,角色分配不对,后将其调整,作业可以正常发送邮件了。

SQL 邮件配置篇的更多相关文章

  1. SQL Server数据库邮件配置

    一.数据库邮件介绍 数据库邮件是从SQL Server数据库引擎中发送电子邮件的企业解决方案,通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中可以包含查询结果,还可以包含来自网络中任何 ...

  2. SQL SERVER 数据库邮件配置

    1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方案.通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件.邮件中 ...

  3. 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题

    最近给客户做了基于SQLServer的发布订阅的“读写分离”功能,但是某些表数据很大,经常发生某几条数据丢失的问题,导致订阅无法继续进行.但是每次发现问题重新做一次发布订阅又非常消耗时间,所以还得根据 ...

  4. Jenkins学习四:Jenkins 邮件配置

    本文主要对Windows环境 jenkins 的邮件通知进行介绍 jenkins 内置的邮件功能 使用email-ext插件扩展的邮件功能 邮件通知功能主要包含两个部分:全局配置和项目配置. 一. 先 ...

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

    还是第一次发现数据库可以发邮件.查了一下百度,试了一下,发现可以. 1.简单了解数据库邮件的概念和使用的传输协议及系统体系: 数据库邮件是从 SQL Server 数据库引擎中发送电子邮件的企业解决方 ...

  6. Linux配置mysql (centos配置java环境 mysql配置篇 总结四)

    ♣安装的几种方法和比较 ♣配置yum源 ♣安装mysql ♣启动mysql ♣修改密码 ♣导入.sql文件 ♣缓存设置 ♣允许远程登录(navicat) ♣配置编码为utf8  1.关于Linux系统 ...

  7. 【转载】Jenkins安装以及邮件配置

    转载:http://www.nnzhp.cn/archives/590 Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包 ...

  8. SQL邮件服务(解决各种疑难杂症)+案例 + 使用SQLserver 邮件系统发送SQL代理作业执行警告

    首先你需要知道你要做的几部: 1 每个数据库都有自己的 SERVICE BROKER 很多SQL SERVER内部服务依赖它 2 启动 SERVICE BROKER 需要 1 STOP 你的 SQL  ...

  9. Jenkins安装以及邮件配置

    Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包等等的工作,还可以在构建任务成功或者失败之后给我们发邮件通知. 什么叫持 ...

随机推荐

  1. 初识Hadoop、Hive

    2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...

  2. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  3. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  4. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  5. npm 使用小结

    本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器.这里的 node 包就是指各种 javascript 库. npm 是随同 Nod ...

  6. AFNetworking报错"_UTTypeCopyPreferredTagWithClass", referenced from: _AFContentTypeForPathExtens

    问题: 在和Unity交互的过程中,从Unity开发工具打包出来的项目文件,在添加AFNetworking库,运行时报出以下错误: Undefined symbols for architecture ...

  7. Android开发学习——动画

    帧动画> 一张张图片不断的切换,形成动画效果* 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长              ...

  8. Atitit.研发团队与公司绩效管理的原理概论的attilax总结

    Atitit.研发团队与公司绩效管理的原理概论的attilax总结 1. 四个理念 1 1.1. 绩效管理的三个目的.四个环节.五个关键2 1.2. 绩效目标smart2 2. 考核对象2 3. 绩效 ...

  9. Mysql 学习之基础操作

    一.表复制 1.复制表结构    将表hello的结构复制一份为表hello3 2.复制数据 a.如果两张表的结构一样且你要复制所有列的数据 mysql> insert into hello3 ...

  10. Struts框架的核心业务

    Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...