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

配置邮件服务

1. Management 目录里面右击 Database Mail

2. 第一个配置选择第一项

以qq邮箱为例

确认后保存.然后点击下一步,直到完成.

发送测试邮件

收到邮件以后可以进行Job的设置

JOB邮件配置

方法一:

新增Operator

配置好确认,

然后打开SQL Server Agent的属性面板

启用Mail 配置

新建一个Job,在通知里面点击电子邮件,选择刚才创建的操作员.DataCenter, 保存. 至此方法一配置结束.

方法二

虽然方法一配置简单,但是每个job都要配置就很麻烦,而且邮件信息量很少. 下面是更改Job存储来达到自动发送邮件的功能,而且可以定义邮件内容.

修改系统存储 msdb.[dbo].[sp_sqlagent_log_jobhistory] ,在尾部加入SQL代码,调用邮件发送存储

IF ( @step_id > 0
       AND @run_status NOT IN ( 1, 4 )
     )
    BEGIN
        EXEC msdb.dbo.usp_send_error_mail @job_id, @step_id, @sql_message_id,
            @sql_severity, @message, @run_status, @run_date, @run_time,
            @run_duration, @server, @retries_attempted
    END

发送mail存储:

CREATE PROCEDURE [dbo].[usp_send_error_mail]
    (
      @job_id UNIQUEIDENTIFIER ,
      @step_id INT ,
      @sql_message_id INT = 0 ,
      @sql_severity INT = 0 ,
      @message NVARCHAR(4000) = NULL ,
      @run_status INT , -- SQLAGENT_EXEC_X code
      @run_date INT ,
      @run_time INT ,
      @run_duration INT ,
      @server sysname = NULL ,
      @retries_attempted INT
    )
AS
    BEGIN  

        DECLARE @jobname sysname   -- 作业名称
        DECLARE @profile_name NVARCHAR(128) --邮件配置文件
        DECLARE @mail_address VARCHAR(MAX) -- 邮件接收地址
        DECLARE @body NVARCHAR(MAX)   -- 邮件正文
        DECLARE @subject NVARCHAR(255)  -- 邮件标题  

        SELECT  @jobname = name
        FROM    msdb.dbo.sysjobs WITH ( NOLOCK )
        WHERE   job_id = @job_id  

 -- 设置DBA邮箱
        SET @mail_address = ‘[email protected]‘
 -- 设置数据库邮件配置文件
        SET @profile_name = ‘sql server mail‘  

 -- 重试次数判断,加上短信报警
        IF ( @retries_attempted >= 10
             AND @retries_attempted % 10 = 0
           )
            BEGIN
  -- 2个小时内重试了10次则报警
                IF ( ( SELECT   DATEDIFF(mi,
                                         CAST(STUFF(STUFF(CAST(run_date AS NCHAR(8)),
                                                          7, 0, ‘-‘), 5, 0,
                                                    ‘-‘) + N‘ ‘
                                         + STUFF(STUFF(SUBSTRING(CAST(1000000
                                                              + run_time AS NCHAR(7)),
                                                              2, 6), 5, 0, ‘:‘),
                                                 3, 0, ‘:‘) AS DATETIME),
                                         GETDATE())
                       FROM     msdb.dbo.sysjobhistory WITH ( NOLOCK )
                       WHERE    job_id = @job_id
                                AND retries_attempted = @retries_attempted
                                - 10
                     ) < 120 )
                    BEGIN
                        SET @mail_address = @mail_address
                            + ‘[email protected]‘
                    END
            END  

 -- 以下根据作业名个性化设置报错邮件接收地址
        IF ( @job_id = ‘B7B792E5-DDAC-4954-B1F4-24163576A628‘ -- PRC_BranchCost
             )
            SET @mail_address = @mail_address
                + ‘;[email protected]‘
 -- 以上根据作业名个性化设置报错邮件接收地址  

 -- 设置邮件正文
        SET @body = ‘服务器:‘ + ISNULL(CAST(@server AS NVARCHAR(255)), ‘‘)
            + CHAR(10) + ‘作业名:‘ + ISNULL(CAST(@jobname AS NVARCHAR(255)), ‘‘)
            + CHAR(10) + ‘步骤:‘ + CAST(@step_id AS NVARCHAR(10)) + CHAR(10)
            + ‘运行时间:‘ + STUFF(STUFF(CAST(@run_date AS NCHAR(8)), 7, 0, ‘-‘), 5,
                              0, ‘-‘) + N‘ ‘
            + STUFF(STUFF(SUBSTRING(CAST(1000000 + @run_time AS NCHAR(7)), 2,
                                    6), 5, 0, ‘:‘), 3, 0, ‘:‘) + CHAR(10)
            + ‘运行耗时:‘
            + CASE WHEN @run_duration / 10000 > 23
                   THEN CAST(@run_duration / 10000 / 24 AS NVARCHAR(4))
                        + ‘day‘
                        + CAST(( @run_duration / 10000 ) % 24 AS NVARCHAR(2))
                        + ‘h‘
                   WHEN @run_duration / 10000 = 0 THEN ‘‘
                   ELSE CAST(( @run_duration / 10000 ) AS NVARCHAR(2)) + ‘h‘
              END + CASE WHEN ( @run_duration % 10000 ) / 100 = 0 THEN ‘‘
                         ELSE CAST(( @run_duration % 10000 ) / 100 AS NVARCHAR(2))
                              + ‘m‘
                    END + CAST(@run_duration % 100 AS NVARCHAR(2)) + ‘s‘
            + CHAR(10) + ‘重试次数:‘ + CAST(@retries_attempted AS NVARCHAR(10))
            + CHAR(10) + ‘严重性:‘ + CAST(@sql_severity AS NVARCHAR(10))
            + CHAR(10) + ‘消息ID:‘ + CAST(@sql_message_id AS NVARCHAR(10))
            + CHAR(10) + ‘消息:‘ + ISNULL(@message, ‘‘)
 -- 设置邮件标题
        SET @subject = ‘SQL作业错误:"‘ + ISNULL(CAST(@jobname AS NVARCHAR(255)),
                                            ‘‘) + ‘"在\\‘
            + ISNULL(CAST(@server AS NVARCHAR(255)), ‘‘)  

        EXEC msdb.dbo.sp_send_dbmail @profile_name = @profile_name,
            @recipients = @mail_address, @subject = @subject, @body = @body  

    END
时间: 2024-10-31 04:45:56

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

第9章 高级 SQL Server 配置

第9章  高级 SQL Server 配置 9.1  使用sp_config 9.1.1  执行查询 9.1.2  配置基本参数 9.1.3  配置高级参数 9.2  管理员专用连接 9.3  使用SQLCMD

正确理解SQL Server配置timeout相关选项

正确理解SQL Server配置选项"remote login timeout"和"remote query timeout" 查看配置选项的设置 sp_configure 远程登录超时 参考:https://msdn.microsoft.com/en-us/library/ms175136.aspx "The remote login timeout option specifies the number of seconds to wait befor

jmeter之连接mysql和SQL Server配置

下载jdbc驱动 在使用jmeter做性能或自动化测试的时候,往往需要直接对数据库施加压力,或者某些参数只能从数据库获取,这时候就必须使用jmeter连接数据库. 1.下载对应的驱动包 mysql驱动:(mysql-connector-java-5.1.13-bin.jar 可能现在有跟新的版本了),并放到Jmeter目录中的lib文件下,复制之后,重启jmeter 链接:http://download.csdn.net/source/3451945 sqlServer驱动:sqljdbc4.j

sql语句复习(基础-提升-技巧-经典数据开发案例-sql server配置)

1 基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:创建新表 cre

SQL Server 新安装启用sa用户/sa用户登录提示管道另一端无进程

安装时只用windows验证 安装完成后: 首先选中服务器(右键)->属性->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"其次展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用  然后在控制面板->管理工具->服务->启动sql server browser.启动以后,即可. 重启电脑 原文地址:https://www.cnblog

SQL Server配置数据库邮件

一.配置邮件 整个事件的核心就是配置邮件服务,这部分需要一个邮件账户以及相应的邮件服务器.下面以QQ邮件为例进行说明. 1.设置邮件服务器 邮箱设置-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,点击开始,然后点击下方的[生成授权码],会提示发送短信,然后获得的授权码就是数据库发送邮件帐号的密码. 2.配置数据库邮件 2.1 连接上数据库,管理-数据库邮件-右键-配置数据库邮件 2.2 在选择配置任务中,如果是新增选择[通过执行以下

一图胜千言 -- SQL Server 配置

原文地址:http://blog.51cto.com/ultrasql/2130491

项目经验——Sql server 数据库的备份和还原____还原数据库提示“介质集有2个介质簇,但只提供了1个。必须提供所有成员” .

在对数据库备份与还原的过程中,我遇到一个问题“介质集有2个介质簇,但只提供了1个.必须提供所有成员”,下面详细的介绍一下遇到问题的经过与问题解决的方法! 一.备份与还原遇到的问题描述与解决方法: 前两天用户测试我们做的评教系统小软件,有点问题我们过去看了看,想将他们的测试数据备份一下,以便我们修改软件测试使用. 我是这样备份的,数据库备份默认有一个路径:C\...,而我又添加了一个新路径,没将默认路径删除,而是选中新路径,我就理所当然的认为数据库中的数据备份到我新加的路径下了. 今天还原数据库时

目录:SQL Server 2014 安装与配置指南

<SQL Server 2014 安装与配置指南> 章节目录 第1章 SQL Server 2014 概况 http://mssqlmct.blog.51cto.com/9951484/1616457 第2章  规划SQL Server 安装 第3章  创建新的 SQL Server实例 第4章 修改SQL Server安装 第5章 升级到SQL Server 2014 第6章  配置 SQL Server 服务实例 第7章  使用SQL Server Management Studio 第8