亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡,我們將竭誠為您提供優(yōu)質(zhì)的服務! 誠征網(wǎng)絡推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

了解SQL Server 2005五個有用的動態(tài)管理對象

添加時間:2012-12-4 17:47:15  添加: 思海網(wǎng)絡 

  SQL Server 2005的新功能為動態(tài)管理對象,它們是在指定時間返回某個數(shù)據(jù)庫實例的特殊狀態(tài)信息的數(shù)據(jù)庫視圖或函數(shù)。這些對象允許數(shù)據(jù)庫管理員或開發(fā)者對數(shù)據(jù)庫服務器進行高效監(jiān)控。動態(tài)管理對象取代了SQL Server以前版本中的許多系統(tǒng)表格,但也為數(shù)據(jù)庫管理員提供更多觀測手段。

  服務器上需要監(jiān)控的內(nèi)容,幾乎都有對應的動態(tài)管理對象。既然有這么多動態(tài)管理對象,在這篇文章中逐一進行討論是不實際的。例如,共有12類動態(tài)管理對象,但這里我主要討論我認為相當重要的五個對象,它們分別來自與SQL Server操作系統(tǒng)、目錄和執(zhí)行有關的類中。

  這些對象被分為兩類:數(shù)據(jù)庫級別和服務器級別。SQL Server 2005的安全構架有些不同,所以你必須采取一些措施保證你能夠使用本文討論的視圖和函數(shù)。你必須保證使用這些例子的用戶能夠查看對象的SERVER STATE和DATABASE STATE。可以應用GRANT語句來完成這一點。

  在我開始介紹動態(tài)管理對象之前,你應該建立一個可用在所有例子里面的表格。列表A是建立這個表格的代碼。

  列表A

IF OBJECT_ID('DMVTest') IS NOT NULL
DROP TABLE DMVTest
GO
CREATE TABLE DMVTest
(
C1 INT IDENTITY PRIMARY KEY CLUSTERED,
C2 INT,
C3 CHAR(5)
)

  SQL Server操作系統(tǒng)相關動態(tài)管理對象

  sys.dm_os_performance_counters:這個視圖返回的信息列舉與SQL Server直接相關的性能統(tǒng)計。返回的信息代表通過Windows性能監(jiān)控器顯示的外部性能計數(shù)器。在SQL Server 2000中,這些數(shù)據(jù)以一個叫做sysperfinfo的系統(tǒng)表格來表示,SQL Server 2005中也有這個表格,但僅用于向后兼容。將來的版本可能會刪除這個表格。

  要了解如何應用這個視圖,而不是運行Windows性能監(jiān)控器來獲取系統(tǒng)信息,請運行列表B中的查詢代碼。這個查詢將返回服務器當前時刻的緩存命中率(Buffer Cache Hit Ratio)。緩存命中率指在內(nèi)存中所發(fā)現(xiàn)的SQL Server請求頁面的百分比。如果服務器運轉正常,這個值一般在90%以上。如果這個值低于90%,則意味著服務器將會去硬盤那里恢復數(shù)據(jù)頁面,這可能是服務器需要更多內(nèi)存的信號。

  列表B

SELECT
(CAST(SUM(CASE LTRIM(RTRIM(counter_name))
WHEN 'Buffer cache hit ratio'
THEN CAST(cntr_value AS INTEGER) ELSE NULL END) AS FLOAT) /
CAST(SUM(CASE LTRIM(RTRIM(counter_name))
WHEN 'Buffer cache hit ratio base' THEN CAST(cntr_value AS INTEGER)
ELSE NULL END) AS FLOAT)) * 100
AS BufferCacheHitRatio
FROM
sys.dm_os_performance_counters
WHERE
LTRIM(RTRIM([object_name])) LIKE '%:Buffer Manager' AND
[counter_name] LIKE 'Buffer Cache Hit Ratio%'

  如果你為了同樣的目的,準備運行上面的查詢,并將得到的結果與運行Windows性能監(jiān)控器顯示的結果進行比較(SQL Server:緩沖器管理器緩存命中率),你會發(fā)現(xiàn)這些數(shù)據(jù)幾乎是一樣的。稍稍研究一下,就可以根據(jù)這個表格開發(fā)出你自己的腳本庫,而不必總是運行Windows性能監(jiān)控器。

  Caveat:這個視圖僅限于SQL Server相關的計數(shù)器使用。如果你希望獲得SQL Server之外的數(shù)據(jù),你還是要使用Windows性能監(jiān)控器。

  目錄相關動態(tài)管理視圖和函數(shù)

  sys.dm_db_index_physical_stats:這個動態(tài)管理函數(shù)為數(shù)據(jù)表格和視圖返回相關數(shù)據(jù)及目錄信息。

 查看列表C。這個函數(shù)接受5個參數(shù):數(shù)據(jù)庫的ID、所討論的表格或視圖的ID、表格或視圖上的一個特定目錄的ID(被我忽略)、分區(qū)號(也被我忽略)和一個模式,我將它指定為“DETAILED”。將這些參數(shù)提交給這個函數(shù)會允許你查看DMVTest表格中的所有目錄細節(jié)。

  在前面定義的表格中運行列表C中的查詢,你會發(fā)現(xiàn)表格中既沒有頁面也沒有記錄。在DMVTest中增加一條記錄,再運行查詢,就會發(fā)現(xiàn)表格中增加了一個頁面。

  INSERT INTO DMVTest(C2, C3)

  VALUES(1,1)

  列表C

SELECT
OBJECT_NAME([object_id]),*
FROM
sys.dm_db_index_physical_stats (DB_ID(),
OBJECT_ID('DMVTest'),NULL,NULL, 'DETAILED')

  這個函數(shù)返回的另一個特別有趣的域為avg_page_space_used_in_percent域,它說明數(shù)據(jù)頁面有多大。從查詢中發(fā)現(xiàn)數(shù)據(jù)頁面約為0.25%。你可以應用這個數(shù)據(jù)來開發(fā)程序,查看數(shù)據(jù)庫表格,并根據(jù)程序中設定的標準,重新為它們編寫目錄。

  執(zhí)行相關的動態(tài)管理視圖和函數(shù)

  sys.dm_exec_requests:這個視圖顯示發(fā)生在SQL Server實例中的每個請求的有關信息。當你研究服務器阻塞時,由此視圖提供的信息特別有用。讀、寫、會話設置和blocking_session_id是這個視圖返回的一些有用數(shù)據(jù)。blocking_session_id欄指出系統(tǒng)上阻塞數(shù)據(jù)庫請求的會話。稍后,我將舉出一個例子,說明如何確定用戶運行的阻塞請求的語句。

  sys.dm_exec_sessions:SQL Server上每個得到驗證的會話由它返回一行。在你希望找出連接到數(shù)據(jù)庫服務器的所有用戶時,可用到這個視圖。它返回session_id、連接通過它建立會話執(zhí)行的讀和寫的程序、以及其它一些會話設置。這個視圖還包含一個叫做is_user_process的BIT域,在查詢這個表格時你可能會用到它。數(shù)值1表示會話為用戶會話而非系統(tǒng)定義的會話。

  sys.dm_exec_sql_text:這是一個根據(jù)sql操作返回SQL Server語句的動態(tài)管理函數(shù)。對某些動態(tài)管理函數(shù)而言,SQL Server 2005將正在執(zhí)行的sql語句以散列值存儲。這個散列值可由sys.dm_exec_sql_text動態(tài)管理函數(shù)解析。但是,任何時候你希望將一個函數(shù)與另一個對象連接起來,并從表格或視圖中提交一個域值時,就會需要用到新的APPLY運算符。SQL Server 2005以前的版本并不具備這一功能。(欲了解SQL Server 2005中APPLY運算符的詳細信息,請參閱這篇文章。)

  現(xiàn)在我們討論一下如何應用這三個動態(tài)管理函數(shù)。列表D中的查詢列舉出數(shù)據(jù)庫中所有當前用戶請求執(zhí)行的會話、阻塞會話、程序、主機和SQL Server語句。

  列表D

SELECT
r.session_id,
r.blocking_session_id,
s.program_name,
s.host_name,
t.text
FROM
sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE
s.is_user_process = 1

  注意我正在使用dm_exec_sql_text函數(shù),并從sys.dm_exec_requests視圖中提交sql_handle域。由sys.dm_exec_requests和sys.dm_exec_sessions視圖返回的每一行,都將調(diào)用sys.dm_exec_sql_text函數(shù)。

  測試

  對它們進行測試是學習這些新型動態(tài)管理對象的最佳方法。SQL Server在線書籍提供了使用這些對象的一些資料,但動手使用要比閱讀學到更多內(nèi)容。投入一點努力,你就會發(fā)現(xiàn)許多應用對象的新方法,不僅包括這個例子中列出的對象,還包括SQL Server 2005中的動態(tài)管理對象。

關鍵字:SQL Server 2005、數(shù)據(jù)庫、服務器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網(wǎng)絡有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機打開網(wǎng)站