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作成計劃任務,並設置成每小時執行一次。

這樣每小時郵箱裏面就能收到須要的信息了。

相關文章
相關標籤/搜索