启动数据库邮件功能
sp_configure 'show advanced', 1;
GO
RECONFIGURE;
GO
sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE;
GO
-- 配置数据库邮件
-- 添加邮件账户
execute msdb.dbo.sysmail_add_account_sp
@account_name = '邮箱帐户名(随便取一个,保持和下文一致即可)',
@description = 'mail account for db e-mail.',
@email_address = '你的邮箱地址',
@replyto_address = '你的邮箱地址',
@display_name = '发信时显示的用户名昵称',
@mailserver_name = '邮箱服务器,如smtp.163.com',
@port = 25,
@username = '邮箱的账户',
@password = '邮箱的密码',
@use_default_credentials = 0;
-- 创建数据库邮件配置文件
execute msdb.dbo.sysmail_add_profile_sp
@profile_name = '配置文件名(随便取一个,保持和下文一致即可)',
@description = 'profile used for sql server mail.';
-- 为数据库配置文件添加邮件账户
execute msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = '配置文件名(同上)',
@account_name = '邮箱帐户名(同上)',
@sequence_number = 1 ;
-- 修改数据库配置文件的安全性: 是否公用
execute msdb.dbo.sysmail_add_principalprofile_sp
@principal_name = 'public',
@profile_name = '配置文件名(同上)',
@is_default = 1 ;
-- 修改参数: 邮件发送失败时尝试重发次数
execute msdb.dbo.sysmail_configure_sp
'AccountRetryAttempts', 3;
-- 修改参数: 邮件发送失败时尝试重发时, 延时秒数
execute msdb.dbo.sysmail_configure_sp
'AccountRetryDelay', 120;
-- 修改参数: 外部邮件进程保持活动状态的最少时间(以秒为单位)。如果数据库邮件要发送多个邮件,增加此值可以使数据库邮件保持活动状态,避免频繁启动和停止的开销。
execute msdb.dbo.sysmail_configure_sp
'DatabaseMailExeMinimumLifeTime', 300;
-- 修改参数: 指定数据库邮件日志中要记录的消息。:error; 2:info; 3:debug
execute msdb.dbo.sysmail_configure_sp
'LoggingLevel', 1;
-- 发送邮件,可放到存储过程中.
exec msdb.dbo.sp_send_dbmail
@profile_name = '配置文件名(同上)',
@recipients = '收件人@163.com',
@subject = '备份日志',
@body = '请检查以下日志:',
@query = 'select * from t_log_backup
where logtime > dateadd(day, -2, getdate())
and ( loglevel < 4 or (loglevel = 4 and dbname is null) )
order by logtime';
-- 每一个邮件的状态:
-- (当你看到很多都是unsend状态时,可能就得检查什么原因了。可以手动运行一下$安装目录../MSSQL/Binn/DatabaseMail90.exe或DatabaseMail.exe)
msdb.dbo.sysmail_allitems;