翻譯|使用教程|編輯:莫成敏|2019-09-18 11:24:44.527|閱讀 1112 次
概述:本文主要介紹創(chuàng)建一個(gè)簡(jiǎn)單的自定義指標(biāo)來跟蹤最近對(duì)數(shù)據(jù)庫進(jìn)行讀取或?qū)懭氲臅?huì)話數(shù)。建立了指標(biāo)的基線后,您將能夠發(fā)現(xiàn)并調(diào)查任何與偏離正常行為的異常行為的原因。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
SQL Monitor是一個(gè)SQL Server監(jiān)控工具。它可以監(jiān)控SQL Servers的健康狀況和活動(dòng),并通過電子郵件為您發(fā)送監(jiān)測(cè)結(jié)果和建議。
本文主要介紹創(chuàng)建一個(gè)簡(jiǎn)單的自定義指標(biāo)來跟蹤最近對(duì)數(shù)據(jù)庫進(jìn)行讀取或?qū)?入的會(huì)話數(shù)。建立了指標(biāo)的基線后,您將能夠發(fā)現(xiàn)并調(diào)查任何與偏離正常行為的異常行為的原因。
了解服務(wù)器上每個(gè)數(shù)據(jù)庫的活動(dòng)會(huì)話數(shù)非常有用。通過一些SQL,我們可以創(chuàng)建一個(gè)自定義指標(biāo)來跟蹤最近在數(shù)據(jù)庫上執(zhí)行讀取或?qū)懭氲臅?huì)話數(shù),例如在過去十分鐘內(nèi)。一旦SQL Monitor適應(yīng)了這個(gè)圖中常見的退潮和流程,你就會(huì)擁有每個(gè)數(shù)據(jù)庫的基線,并且能夠發(fā)現(xiàn)可疑或不尋常的使用模式。此時(shí),SQL中有很多方法可以詳細(xì)了解哪些用戶處于活動(dòng)狀態(tài),以及他們正在做什么。
我已經(jīng)通過跟蹤這個(gè)指標(biāo)發(fā)現(xiàn)了問題,其中一個(gè)我認(rèn)為已禁用的進(jìn)程以某種方式重新啟動(dòng),另一個(gè)數(shù)據(jù)庫本應(yīng)該顯示一些活動(dòng),卻沒有顯示任何活動(dòng)!
誰在使用您的數(shù)據(jù)庫以及他們?cè)谧鍪裁矗?/strong>
您的數(shù)據(jù)庫中有多少用戶?好吧,可能只有一個(gè)用戶(登錄)使用很多會(huì)話做了大量的事情。如果您在一個(gè)用戶ID下具有與應(yīng)用程序的共享連接,則尤其如此,因此有許多人或進(jìn)程使用一個(gè)登錄名。
理想情況下,這不應(yīng)該發(fā)生;每個(gè)用戶都應(yīng)該使用他們獨(dú)特的Windows登錄,從而使您能夠正確審核正在進(jìn)行的操作。您的安全性越高,您可能與會(huì)話成比例的用戶就越多,因?yàn)檫@意味著用戶不會(huì)共享登錄。
可悲的是,我們并不總是生活在一個(gè)理想的世界,特別是在IT領(lǐng)域。因此,我們需要跟蹤SPID和登錄。清單1顯示了一個(gè)快速查詢,告訴您服務(wù)器上每個(gè)數(shù)據(jù)庫的每個(gè)登錄名使用了多少個(gè)會(huì)話。
SELECT Db_Name(Database_id), String_Agg(Login_Name + ' (' + Convert(VARCHAR(8), No_Sessions) + ')', ', ') FROM ( SELECT database_id, login_name, Count(*) AS No_Sessions FROM sys.dm_exec_connections AS A INNER JOIN sys.dm_exec_sessions AS B ON A.session_id = B.session_id GROUP BY login_name, database_id ) AS f(Database_id, Login_Name, No_Sessions) GROUP BY Database_id;
清單1
您還想知道每個(gè)會(huì)話執(zhí)行的最后一個(gè)SQL嗎?清單2將告訴你。
SELECT A.session_id, Db_Name(database_id) AS [database], DateDiff(MINUTE, A.connect_time, GetDate()) AS [Connected (mins)], num_reads, num_writes, login_name, Text AS SQL FROM sys.dm_exec_connections AS A INNER JOIN sys.dm_exec_sessions AS B ON A.session_id = B.session_id INNER JOIN sys.sysprocesses AS s ON s.spid = A.session_id OUTER APPLY::fn_get_sql(sql_handle);
清單2
這可能很有趣,但首先我們要找出每個(gè)數(shù)據(jù)庫的“通常”活動(dòng)會(huì)話數(shù),以便我們可以判斷活動(dòng)會(huì)話數(shù)是否因任何原因或突然降至零而跳躍(永遠(yuǎn)不是一個(gè)好兆頭)。然后,我們可以使用上述查詢進(jìn)一步調(diào)查。
跟蹤最近活動(dòng)的會(huì)話數(shù)
SQL Monitor的內(nèi)置用戶連接度量標(biāo)準(zhǔn)隨時(shí)為我們提供了連接總數(shù)的實(shí)例級(jí)數(shù)據(jù)。連接和會(huì)話之間通常但不總是1:1的關(guān)系。在數(shù)據(jù)庫級(jí)別,內(nèi)置的Active Transactions度量標(biāo)準(zhǔn)僅為我們提供當(dāng)前正在運(yùn)行的事務(wù);它將錯(cuò)過讀取,可能包括許多系統(tǒng)事務(wù)。此外,它只是一個(gè)時(shí)間點(diǎn)測(cè)量。
我們想要的是一個(gè)數(shù)據(jù)庫級(jí)度量標(biāo)準(zhǔn),告訴我們有多少會(huì)話在最近一段時(shí)間內(nèi)主動(dòng)閱讀或?qū)懭搿G鍐?顯示了一個(gè)查詢,它告訴我們?cè)谶^去的十分鐘內(nèi)在連接的數(shù)據(jù)庫上完成讀取或?qū)懭氲臅?huì)話數(shù)。
SELECT Count(*) AS Active_Sessions FROM sys.dm_exec_connections AS A INNER JOIN sys.dm_exec_sessions AS B ON A.session_id = B.session_id WHERE database_id = Db_Id() AND A.session_id <> @@Spid AND ( DateDiff(MINUTE, last_read, GetDate()) < 10 OR DateDiff(MINUTE, last_write, GetDate()) < 10 );
清單3
當(dāng)然,相當(dāng)簡(jiǎn)單;根據(jù)您自己對(duì)“主動(dòng)”的定義,很容易對(duì)其進(jìn)行調(diào)整。為了被認(rèn)為是“最近的”,讀或?qū)憫?yīng)該有多近?你只對(duì)寫作感興趣嗎?它還具有從結(jié)果中消除您自己的會(huì)話(SPID)的必要調(diào)整。您不想衡量自己的監(jiān)控活動(dòng)!
我們現(xiàn)在有一個(gè)返回整數(shù)的數(shù)據(jù)庫,因此很容易使用它來為SQL Monitor創(chuàng)建自定義指標(biāo)。
安裝自定義指標(biāo)
如果您在SQL Monitor中,則打開“配置”窗口,然后單擊“自定義度量標(biāo)準(zhǔn)”,然后單擊“創(chuàng)建自定義度量標(biāo)準(zhǔn)”按鈕。現(xiàn)在,我們可以填寫“當(dāng)前活動(dòng)會(huì)話”度量標(biāo)準(zhǔn)的所有詳細(xì)信息,以跟蹤在過去10分鐘內(nèi)執(zhí)行讀取或?qū)懭氲臅?huì)話數(shù)。我每五分鐘收集一次,因?yàn)樵谫Y源方面,查詢非常簡(jiǎn)單。
一旦您跟蹤了指標(biāo)一段時(shí)間,并了解數(shù)據(jù)庫的基線,您可能還希望為任何可疑的高級(jí)別活動(dòng)創(chuàng)建關(guān)聯(lián)的警報(bào),或相反地為任何零活動(dòng)期間創(chuàng)建關(guān)聯(lián)的警報(bào)。
最終屏幕僅確認(rèn)所有設(shè)置。單擊“確定”,將創(chuàng)建度量標(biāo)準(zhǔn)和警報(bào)并開始跟蹤數(shù)據(jù)。
以下是自定義指標(biāo)的Analysis圖,用于監(jiān)控服務(wù)器上的數(shù)據(jù)庫。
知道您的數(shù)據(jù)庫中有多少用戶和會(huì)話,這些用戶的身份以及他們一直在做什么,這總是讓人放心。最近活動(dòng)會(huì)話的數(shù)量是指標(biāo)的一個(gè)很好的示例,該指標(biāo)需要基線來告訴您測(cè)量是合理的還是問題的跡象。它也是一個(gè)度量標(biāo)準(zhǔn),很少顯示需要經(jīng)常進(jìn)行人工檢查的問題,因此是SQL Monitor的理想選擇。
這就是這篇教程的內(nèi)容了,感興趣的朋友可以下載SQL Monitor的試用版哦~
金喜正規(guī)買球相關(guān)的文章:
專用SQL監(jiān)控工具SQL Monitor監(jiān)視服務(wù)器和數(shù)據(jù)庫,具有三個(gè)突出優(yōu)點(diǎn)
使用SQL Server監(jiān)控工具SQL Monitor,監(jiān)視Azure SQL數(shù)據(jù)庫的性能問題(上)
使用SQL Server監(jiān)控工具SQL Monitor,監(jiān)視Azure SQL數(shù)據(jù)庫的性能問題(下)
監(jiān)控工具SQL Monitor的兩個(gè)新功能,PowerShell Alert API和服務(wù)器權(quán)限概述
想要購買SQL Monitor正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
掃描關(guān)注慧聚IT微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn