开篇介绍
在与数据库相关的项目中,比如像数据库维护、性能警报、程序出错警报或通知都会使用到在 SQL Server 中配置Email发送邮件的功能。
在BI项目中,这种功能也使用的比较多。比如 SSIS Package 一般会配置到 SQL Server Agent 按计划执行,这时 Package 执行失败后就需要在 Job 中发送邮件通知以及时排除错误。有的时候在 Package 级别也会将错误信息存入 Error Log中, 使用触发器来发送邮件,以防止 Job 中的Notification 没有配置成功或者禁用。
Database Mail 邮件的配置
一个基于表级别, 一个基于 Job 级别,它们都需要使用到基本的邮件配置功能。
开始配置邮件服务。
第一次配置使用。
填好 Profile 名称,它在很多地方会用到,并点击添加来添加一个新的 SMTP 账户。
添加 SMTP 账户,我个人使用的是126的邮箱,可以在它们官网上搜索一下它的SMTP服务器地址。
在SMTP账户验证的时候输入邮箱地址和密码。
下一步
再下一步
基本上可以直接使用默认配置,或者可以选择性的添加禁止发送的文件后缀。
完成
下面就要开始简单测试一下邮件发送的功能
测试自己发给自己
有的时候会有一些延迟,第一次稍微等下就可以了。如果没有发送成功,一般的情况就是账户配置不正确,比如用户名和密码,第二个常见的错误就是 SMTP 服务器的设置不正确。
显示发送成功!
SQL Server Agent 上的配置
新建一个测试 JOB
首先启用 SQL Server Agent
先添加一个 Operator 操作员
使用 withinker@126.com 作为接收邮件地址,SMTP 是发送邮件的账户,这里的Notification 是接收邮件的账户。
这个地址最好是一个公共邮件地址,能够映射或者包含整个团队的所有邮件,这样可以保证团队中的每一位成员都可以接受到邮件通知。
更改 SQL Server Agent 属性。
在 Alert System 中选择好之前配置好的 BIWORK Profile 它包含了 SMTP 发送邮件服务的 biwork@126.com 账户。
一般可以不重启 SQL Server Agent,但是如果后来测试没有生效的话可以重启试一下。
那么这样 SQL Server Agent 的操作员和通知就已经配置完毕了,我们可以创建一个测试Job来测试一下,当JOB 完成时发送一个通知到操作员 withinker@126.com
测试 JOB 中的邮件发送
新建一个 Job - TestJob
在 Step 中创建一个简单的 SELECT 查询,实际使用中在这里还可以配置 SSIS Package 完成 ETL操作
还可以演示一下,作一个计划,每分钟执行这个步骤依次来模拟实际 JOB 计划。
把计划时间改成1分钟,也就是说1分钟这个 SQL 语句就会被执行1次。
在通知中,设置好操作员 withinker。并且为了演示邮件通知的效果,设置为当JOB执行完成后就发送邮件。实际应用中应该是JOB执行失败时发送邮件,这个可以在之后来调整。
配置完成后,就耐心等待准备一分钟接收一封通知邮件吧!
到这里为止,整个邮件配置,操作员配置和JOB邮件通知的配置就完成了!