SQL SERVER 2005郵件

       作爲一個數據庫管理員,如果每天的日常監控的結果可以使用一種方式能提醒到你的話,這樣可以避免總是遠程連接上SQL SERVER每隔一段時間就去運行個操作,然後再看結果。SQL SERVER 2005中自帶的郵件功能可以實現這個需求哦。

今天介紹下如果通過郵件和計劃任務來實現每隔1小時得到數據庫緩存中平均操作最耗時的50個T-SQL語句。具體的操作分兩步:

1.設置SQL SERVER的郵件功能

2.制定計劃任務

我們先開始第一步操作:

1)登錄數據庫,在【對象資源管理器】裏面按下圖箭頭操作

2)右鍵點擊【數據庫郵件】,選擇【配置數據庫郵件】,下一步操作後選擇下圖選項後繼續下一步:

3)在出現的界面中執行下圖中的操作

4)點擊【添加】按鈕後,再出現的對話中進行如下操作

5)下一步後,將SQLSERVEREMAIL前面的複選框選中後,下一步,完成。

這時數據庫的郵件就配置好了。下面我們使用T-SQL語句來實現郵件的發送,此時用到一個存儲過程msdb.dbo.sp_send_dbmail。該存儲過程的具體用法見MSDN。

使用如下語句來查看緩存中平均操作時間前50的操作。

  1. Exec msdb.dbo.sp_send_dbmail  
  2.     @profile_name='SQLSERVEREMAIL1',    --使用的數據庫郵件配置文件 
  3.     @recipients='[email protected]',    --收件人地址,多個收件人可用分號分隔 
  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做成計劃任務,並設置成每小時執行一次。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章