一、通过SQL Mail
SQL Mail 提供了一种从 Microsoft SQL Server 发送和阅读电子邮件的简单方法。原理是通过调用服务器上面的 MAPI 子系统来进行邮件发送,所以服务器上面需要安装诸如 Microsoft Outlook(不能是Outlook Express) 之类的 MAPI 客户端,而且在发送邮件的时候,Outlook必须处于打开的状态。具体的设置方法可以通过网上查询。
二、使用CDONTS
通过调用本机的SMTP服务来发送邮件,所以服务器上必须安装IIS和SMTP。相应的存储过程为
代码如下 | 复制代码 |
CREATE PROCEDURE [dbo].[sp_send_cdontsmail] |
调用方法:
代码如下 | 复制代码 |
exec sp_send_cdontsmail '[email protected]','[email protected]',' |
测试邮件标题','这里是邮件内容,推
三、使用CDOSYS
微软已经在 Windows 2000、Windows XP 以及 Windows 2003 中淘汰了 CDONTS,所以使用CDOSYS是目前最好的解决方案。使用CDOSYS可以使用远程的SMTP服务器来发送邮件,我们通过测试163网易的免费邮箱,可以正常发送邮件,相应的存储过程如下:
代码如下 | 复制代码 |
AS Declare @smtpserver varchar(50) --SMTP服务器地址 EXEC @hr = sp_OACreate 'CDO.Message', @object OUT EXEC @hr = sp_OASetProperty @object, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2' --下面三条语句是smtp验证,如果服务器需要验证,则必须要这三句,你需要修改用户名和密码 EXEC @hr = sp_OAMethod @object, 'Configuration.Fields.Update', null EXEC @hr = sp_OASetProperty @object, 'TextBody', @Body --判断出错 |
调用存储过程发送邮件:exec sys_sendmail '[email protected]','[email protected]','测试邮件标题','这里是邮件内容,
从以上三种方法的优缺点比较来看,我们当然采取第三种方法,不需要在服务器上装别的组件和程序。我们可以在SQL代理中建立一个作业,调度设为每天下午6点,执行的数据库备份语句和发送邮件的SQL如下:
代码如下 | 复制代码 |
declare @dbname varchar(50) --下面获取备份之后文件的大小 select top 1 @size=backup_size |