SQL server 2000邮件配置方法
--========================================
--SQL 邮件配置
--outlook 2003,sql server 2000,163邮局
--========================================
OutLook配置:OutLook 2000 网上说经常发不成功,我用的是
OutLook 2003,打开sql server 2000的企业管理器,展开支持服务,右击“sql 邮件”点属性。这时里面就会出现有outlook了。选择它就可以了。
sql server 2000:在控制面板中打开“服务”,找到:MSSQLSERVER 和 SQLSERVERAGENT,其登录方式不应该为“本地系统”,应该是具有邮件客户端程序操作权限的 Windows 用户,比如 Windows 管理员,修改方法为,双击该服务,切换到“登录”标签,选择“此帐户”,点击“浏览”选择一个用户,并输入密码,点击“确定”。右键,重新启动这两个服务。展开“管理”,“SQL Server 代理”,在“操作员”上点击右键,“新建一个操作员”,这个操作员就是我们要向其发送电子邮件的人。在“企业管理器”中,展开“支持服务”,在“SQL 邮件”上点击右键,“属性”,在下拉列表框中选择“配置文件名”,点击测试,检查是否成功.如果我们要对作业进行监视,比如当数据库备份失败时向操作员发送邮件,就得在“SQL Server 代理”的“作业”列表中打开对应作业的属性,切换到“通知”标签,选择相应操作员即可。至此,一个 SQL 邮件配置就完成了,请确保您的 SQL Server Agent 随时都在运行。请确保您的 SQL Server 补丁是最新的。
要注意的几个问题:
1.sql server 2000的启动帐户要和sqlagent的启动帐户相同。并且不能用系统帐户。
2.smtp服务器是否需要验证。hotmail的免费信箱好像不可以在outlook里设置,最好用OutLook 2003
3.在sql邮件运行过程中不能关闭outlook,否则不能发送邮件,要先启动OutLook 2003 再启动 SQL ,可执行exec startmail /exec stopmail 来启动或停止sqlmail.
--下面为测试代码,可将直接放入作业里,增加调度即可运行.
--=======================================
--将存储过程的结果发送给指定联系人
--=======================================
exec xp_sendmail [url=mailto:'
***@hotmail.com',@query='sp_configure']
'***@hotmail.com',@query='sp_configure'[/url]
--============================================
--统计northwind数据库中相关信息
--并将结果发送到指定的信箱
--原理:northwind数据库中没有xp-sendmail
--存储过程,所以采用方式为:
--将查询结果写入一个全局临时表
--然后在删除全局临时表
--===========================================
set nocount on
select case when(grouping(od.productid)=1)then '定单总计:'
else isnull(od.productid,'空值') end as productid,
case when (grouping(od.orderid)=1)then '产品总计:'
else isnull(od.orderid,'空值')end as orderid,sum(od.quantity) as'总计'
into ##boyi55
from (select convert(nvarchar(10),productid) as productid,convert(nvarchar(10),orderid) as orderid,quantity from [order details]) as od
group by od.productid,od.orderid
with cube
exec master..xp_sendmail @recipients='
h11h99@126.com;
fengjicai@hotmail.com;
queeny_fei@yahoo.com.cn',
@subject='northwind数据库中order details相关信息汇总结果',
@message='此信息由sql server 2000数据库作业自动发送,如果输出错误,请直接回复e-mail到:[url=mailto:fengjicai@hotmail.com]
***@hotmail.com[/url]',
@query='select * from ##boyi55',
@width=100--设置查询的输出文本行宽
drop table ##boyi55
set nocount off
--===========================================
--将结果作为附件文件发送
--===========================================
exec master..xp_sendmail @recipients='
***@hotmail.com',
@query='select * from information_schema.tables',
@subject='SQL Server report',
@message='The contents of information_schema.tables:',
@attach_results='true',
@width= 250
======================
--===========================================
--===========================================
xp_sendmail {[@recipients =] "recipients [;...n]"}
[,[@message =] "message"]
[,[@query =] "query"]
[,[@attachments =] attachments]
[,[@copy_recipients =] "copy_recipients [;...n]"
[,[@blind_copy_recipients =] "blind_copy_recipients [;...n]"
[,[@subject =] "subject"]
[,[@type =] "type"]
[,[@attach_results =] "attach_value"]
[,[@no_output =] "output_value"]
[,[@no_header =] "header_value"]
[,[@width =] width]
[,[@separator =] "separator"]
[,[@echo_error =] "echo_value"]
[,[@set_user =] "user"]
[,[@dbuse =] "database"]
其中@recipients是必需的
参数说明:
参数 说明
@recipients 收件人,中间用逗号分开
@message 要发送的信息
@query 确定执行并依附邮件的有效查询,除触发器中的插入表及删除表外,此查询能引用任何对象
@attachments 附件
@copy_recipients 抄送
@blind_copy_recipients 密送
@subject 标题
@attach_results 指定查询结果做为附件发送
@no_header 不发送查询结果的列名
@set_user 查询联接的用户名,默认为Guset
@dbuse 查询所用的数据库,默认为缺省数据库