附上:SQL2005 数据库邮件设置



SQL2005 中添加了数据库邮件功能,使用起来还是很方便地。

1、打开SQL Server 2005 外围应用配置器,选择“功能的外围应用配置器”,选择“数据库邮件”,勾选“启用数据库邮件存储过程”,点“确定”退出。

2、建立发送邮件的Sql server用户,例如mailuser ,给mailuesr添加权限,用户映射中添加msdb数据库的“DatabaseMailUserRole”权限。

3、打开 Sql Server Managerment Studio ,展开本地数据库下的“管理”,选择“数据库邮件”,右键选“配置数据库邮件”,填写配置项;例如,配置文件名:mail_Config,添加一个发送邮件的账户,也可以添加多个账户。按照配置步骤完成配置。

4、重复步骤3中,右键“数据库邮件”,选择“发送测试电子邮件”,填写发送的邮件地址发送。

以上就完成了数据库邮件的配置。下面看看简单的应用:

应用一、在作业完成后发送邮件通知

1、展开SQL server 代理,添加一个操作员,写上操作员的名字和Mail地址。

2、添加作业,配置作业的内容和步骤,选择“通知”,勾选“电子邮件”,后面选择刚才添加的操作员,后面选择“当作业失败时”,确定完成。

3、打开Sql server 代理的属性,选择“警报系统”,勾选“启动邮件配置文件”,“邮件系统”选择数据库邮件,“邮件配置文件”选择刚才创建的配置文件名,也就是“mail_Config”。确定完成。

4、一定要重启Sql server 代理,这点很重要,不然发不出邮件。我试了好长时间呢,就是因为没重启Sqlserver代理。

应用二、可以随时调用邮件存储过程发送邮件,也可以在程序中调用

在MSDB数据库中,发送邮件

ues MSDB

go

EXEC msdb..sp_send_dbmail 参数......   后面有很多参数

@profile_name                               -- 数据库邮件配置名称

, @recipients                                  -- 收件人列表,以分号分隔

, @copy_recipients                         -- 抄送人列表,以分号分隔

, @blind_copy_recipients                -- 密件抄送人列表,以分号分隔

, @subject                                      -- 邮件的主题, SQL Server Message

, @body                                         -- 邮件正文

, @body_format                            -- TEXT(默认) / HTML

, @importance                                -- 邮件的重要性:Low / Normal / High

, @sensitivity                                -- 邮件的敏感度:Normal / Personal / Private / Confidential

, @file_attachments                     -- 附件的文件名列表,以分号分隔。必须使用绝对路径指定列表中的文件

, @query                                      -- 要执行的查询,任何有效的Transact-SQL。查询结果可以作为文件附加,或包含在电子邮件的正文中。

, @attach_query_result_as_file    -- 指定查询结果集是否作为附件返回,0-正文(默认) / 1-附件

, @query_attachment_filename   -- 附件使用的文件名

, @query_result_header                -- 指定查询结果是否包含列标题,0-不包含 / 1-包含(默认)

, @query_result_separator          -- 列分隔符,默认为空格

, @query_result_width                  -- 每列最大宽度

, @append_query_error               -- query错误时发送电子邮件: 1-发送,错误消息包含在电子邮件的正文中。0-不发送电子邮件(默认)

察看发送情况

user MSDB

go

SELECT * FROM sysmail_allitems

SELECT * FROM sysmail_mailitems

SELECT * FROM sysmail_event_log