blog.Toby

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  130 随笔 :: 2 文章 :: 150 评论 :: 0 Trackbacks
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 查询所用的数据库,默认为缺省数据库

posted on 2008-01-18 10:17 渠上月 阅读(1607) 评论(0)  编辑  收藏 所属分类: sql (sqlServer)

只有注册用户登录后才能发表评论。


网站导航: