SQL Server 2005的動(dòng)態(tài)管理對(duì)象
導(dǎo)讀:SQLServer2005的新功能為動(dòng)態(tài)管理對(duì)象,它們是在指定時(shí)間返回某個(gè)數(shù)據(jù)庫實(shí)例的特殊狀態(tài)信息的數(shù)據(jù)庫視圖或函數(shù)。這些對(duì)象允許數(shù)據(jù)庫管理員或開發(fā)者對(duì)數(shù)據(jù)庫服務(wù)器進(jìn)行高效監(jiān)控。動(dòng)態(tài)管理對(duì)象取代了SQLServer以前版本中的許多系統(tǒng)表格,但也為數(shù)據(jù)庫管理員提供更多觀測手段。下文就為大家詳細(xì)介紹SQL Server 2005的動(dòng)態(tài)管理對(duì)象。
服務(wù)器上需要監(jiān)控的內(nèi)容,幾乎都有對(duì)應(yīng)的動(dòng)態(tài)管理對(duì)象。既然有這么多動(dòng)態(tài)管理對(duì)象,在這篇文章中逐一進(jìn)行討論是不實(shí)際的。例如,共有12類動(dòng)態(tài)管理對(duì)象,但這里我主要討論我認(rèn)為相當(dāng)重要的五個(gè)對(duì)象,它們分別來自與SQLServer操作系統(tǒng)、目錄和執(zhí)行有關(guān)的類中。
這些對(duì)象被分為兩類:數(shù)據(jù)庫級(jí)別和服務(wù)器級(jí)別。SQLServer2005的安全構(gòu)架有些不同,所以你必須采取一些措施保證你能夠使用本文討論的視圖和函數(shù)。你必須保證使用這些例子的用戶能夠查看對(duì)象的SERVERSTATE和DATABASESTATE??梢詰?yīng)用GRANT語句來完成這一點(diǎn)。
在我開始介紹動(dòng)態(tài)管理對(duì)象之前,你應(yīng)該建立一個(gè)可用在所有例子里面的表格。列表A是建立這個(gè)表格的代碼。
SQL Server操作系統(tǒng)相關(guān)動(dòng)態(tài)管理對(duì)象
sys.dm_os_performance_counters:這個(gè)視圖返回的信息列舉與SQLServer直接相關(guān)的性能統(tǒng)計(jì)。返回的信息代表通過Windows性能監(jiān)控器顯示的外部性能計(jì)數(shù)器。在SQLServer2000中,這些數(shù)據(jù)以一個(gè)叫做sysperfinfo的系統(tǒng)表格來表示,SQLServer2005中也有這個(gè)表格,但僅用于向后兼容。將來的版本可能會(huì)刪除這個(gè)表格。
要了解如何應(yīng)用這個(gè)視圖,而不是運(yùn)行Windows性能監(jiān)控器來獲取系統(tǒng)信息,請(qǐng)運(yùn)行列表B中的查詢代碼。這個(gè)查詢將返回服務(wù)器當(dāng)前時(shí)刻的緩存命中率(BufferCacheHitRatio)。緩存命中率指在內(nèi)存中所發(fā)現(xiàn)的SQLServer請(qǐng)求頁面的百分比。如果服務(wù)器運(yùn)轉(zhuǎn)正常,這個(gè)值一般在90%以上。如果這個(gè)值低于90%,則意味著服務(wù)器將會(huì)去硬盤那里恢復(fù)數(shù)據(jù)頁面,這可能是服務(wù)器需要更多內(nèi)存的信號(hào)。
如果你為了同樣的目的,準(zhǔn)備運(yùn)行上面的查詢,并將得到的結(jié)果與運(yùn)行Windows性能監(jiān)控器顯示的結(jié)果進(jìn)行比較(SQLServer:緩沖器管理器緩存命中率),你會(huì)發(fā)現(xiàn)這些數(shù)據(jù)幾乎是一樣的。稍稍研究一下,就可以根據(jù)這個(gè)表格開發(fā)出你自己的腳本庫,而不必總是運(yùn)行Windows性能監(jiān)控器。
Caveat:這個(gè)視圖僅限于SQLServer相關(guān)的計(jì)數(shù)器使用。如果你希望獲得SQLServer之外的數(shù)據(jù),你還是要使用Windows性能監(jiān)控器。
目錄相關(guān)動(dòng)態(tài)管理視圖和函數(shù)
sys.dm_db_index_physical_stats:這個(gè)動(dòng)態(tài)管理函數(shù)為數(shù)據(jù)表格和視圖返回相關(guān)數(shù)據(jù)及目錄信息。查看列表C。這個(gè)函數(shù)接受5個(gè)參數(shù):數(shù)據(jù)庫的ID、所討論的表格或視圖的ID、表格或視圖上的一個(gè)特定目錄的ID(被我忽略)、分區(qū)號(hào)(也被我忽略)和一個(gè)模式,我將它指定為“DETAILED”。將這些參數(shù)提交給這個(gè)函數(shù)會(huì)允許你查看DMVTest表格中的所有目錄細(xì)節(jié)。
在前面定義的表格中運(yùn)行列表C中的查詢,你會(huì)發(fā)現(xiàn)表格中既沒有頁面也沒有記錄。在DMVTest中增加一條記錄,再運(yùn)行查詢,就會(huì)發(fā)現(xiàn)表格中增加了一個(gè)頁面。
INSERT INTO DMVTest(C2, C3)
VALUES(1,1)
這個(gè)函數(shù)返回的另一個(gè)特別有趣的域?yàn)閍vg_page_space_used_in_percent域,它說明數(shù)據(jù)頁面有多大。從查詢中發(fā)現(xiàn)數(shù)據(jù)頁面約為0.25%。你可以應(yīng)用這個(gè)數(shù)據(jù)來開發(fā)程序,查看數(shù)據(jù)庫表格,并根據(jù)程序中設(shè)定的標(biāo)準(zhǔn),重新為它們編寫目錄。
SQL Server 2005的動(dòng)態(tài)管理對(duì)象在SQL Server 2005中也是一個(gè)非常關(guān)鍵的操作技術(shù),掌握好了這些將會(huì)給您加分,給您提供更多的機(jī)會(huì)。
【編輯推薦】
- 如何維護(hù)SQL Server 2005 CE數(shù)據(jù)庫
- SQL Server 2005 Compact Edition常見錯(cuò)誤
- 完全卸載SQL Server 2005的實(shí)現(xiàn)方法
- SQL Server 2005的各種版本所支持的功能