SQL Server 資料收集是個很方便的用來處理效能問題的資料收集器,但如果當我們沒有需要使用的時候,該怎麼來關閉呢 ?
在幾年前整理了一篇文章「設定管理資料倉儲收集 SQL Server 運作狀況」,從文章的點閱數看起來,還真多朋友捧場的。而我自己也利用同樣的方式,來幫一些客戶做設定,方便來做問題盤查。
剛好今天又遇到一個好久之前似乎有處理過問題的客戶,但他反映的問題確是很不一定,他是透過 SQL Server 的管理報表中,發現有很多不正常的連線在連接 MDW 資料庫,但是電腦上已經沒有那個資料庫了 ? 而仔細查看,發起連線的是 SQL Server Agent,因此同事就請我協助看一下。
實際連線查看一下,原來在當年處理完問題之後,沒有多久客戶就把我們用來做資料收集的資料庫 MDW 直接給刪除了,因此才會在 Log 內會有一堆那樣的錯誤。
那麼到底要怎麼來正確做刪除呢 ?
1. 首先我們要先到資料收集的節點,選擇「停用資料收集」
透過這樣的方式, SSMS 會自動將部分資料收集所產生的 Job 給 Disable 。
2. 但除了上述所列出的那幾個外,但還有幾個因為資料收集所產生的 Job,SSMS 並沒有同時將這些給 Disable
這部分我們可以用以下的語法檢查一下
--
-- 檢查還有哪些 Job 使用我們所設定的管理資料倉儲的資料庫
--
select j.name, j.enabled, s.step_name from msdb.dbo.sysjobsteps s
join msdb.dbo.sysjobs j ON s.job_id = j.job_id
where database_name = 'MDW'
3. 因為我們實際要整個清除資料收集,因此我們就可以用以下語法來做處理,這樣就可以把相關的設定給清除乾淨了。最後就可以把您用來做資料收集的資料庫給刪除了。
EXEC msdb.dbo.sp_syscollector_cleanup_collector
EXEC msdb.dbo.sp_delete_job @job_name = N'mdw_purge_data_[MDW]';
EXEC msdb.dbo.sp_delete_job
@job_name = N'sysutility_get_cache_tables_data_into_aggregate_tables_daily';
EXEC msdb.dbo.sp_delete_job
@job_name = N'sysutility_get_cache_tables_data_into_aggregate_tables_hourly';
EXEC msdb.dbo.sp_delete_job
@job_name = N'sysutility_get_views_data_into_cache_tables';
以上三個步驟,提供給大家參考一下囉。