SQL SERVER 2005邮件

       做为一个数据库管理员,若是天天的平常监控的结果能够使用一种方式能提醒到你的话,这样能够避免老是远程链接上SQL SERVER每隔一段时间就去运行个操做,而后再看结果。SQL SERVER 2005中自带的邮件功能能够实现这个需求哦。sql

今天介绍下若是经过邮件和计划任务来实现每隔1小时获得数据库缓存中平均操做最耗时的50个T-SQL语句。具体的操做分两步:数据库

1.设置SQL SERVER的邮件功能缓存

2.制定计划任务ide

咱们先开始第一步操做:spa

1)登陆数据库,在【对象资源管理器】里面按下图箭头操做对象

2)右键点击【数据库邮件】,选择【配置数据库邮件】,下一步操做后选择下图选项后继续下一步:blog

3)在出现的界面中执行下图中的操做ip

4)点击【添加】按钮后,再出现的对话中进行以下操做ci

5)下一步后,将SQLSERVEREMAIL前面的复选框选中后,下一步,完成。资源

这时数据库的邮件就配置好了。下面咱们使用T-SQL语句来实现邮件的发送,此时用到一个存储过程msdb.dbo.sp_send_dbmail。该存储过程的具体用法见MSDN。

使用以下语句来查看缓存中平均操做时间前50的操做。

  
  
  
  
  1. Exec msdb.dbo.sp_send_dbmail  
  2.     @profile_name='SQLSERVEREMAIL1',    --使用的数据库邮件配置文件 
  3.     @recipients='huangzhf@fabao.cn',    --收件人地址,多个收件人可用分号分隔 
  4.     @subject='每小时缓存中执行时间最长的50个语句',  --邮件主题  
  5.     @query='SELECT TOP 50 
  6. total_worker_time/execution_count/1000 AS [Avg CPU Time(ms)],deqs.execution_count, 
  7. (SELECT SUBSTRING(text,statement_start_offset/2+1,(CASE WHEN statement_end_offset = -1 then LEN(CONVERT(nvarchar(max), text)) * 2 ELSE statement_end_offset end -statement_start_offset)/2+1) FROM sys.dm_exec_sql_text(sql_handle)) AS query_text  
  8. FROM sys.dm_exec_query_stats deqs 
  9. ORDER BY [Avg CPU Time(ms)] DESC',  --具体的查询T-SQL 
  10. @attach_query_result_as_file = 1,   --查询结果以附件形式发送 
  11. @query_no_truncate = 1  --不截断长字段值 

将上面的T-SQL作成计划任务,并设置成每小时执行一次。

这样每小时邮箱里面就能收到须要的信息了。

相关文章
相关标签/搜索