標籤:
原文: 第三章——使用系統函數、預存程序和DBCC SQLPERF命令來監控SQLServer(3)
本文為這個系列最後一篇。將是如何使用DBCC命令來監控SQLServer日誌空間的使用方式。
前言:
每個資料庫都必須有交易記錄。交易記錄記錄每個DML操作,並應用於SQLServer的資料庫中,如果復原模式為FULL並經常有DML操作,日誌將增長得非常快。幾時復原模式為simple,當資料庫處於事務複製或者合併式複寫時,日誌通常會增長。如果日誌不是經常備份且記錄檔的增長沒有受到限制的話,將有可能耗光你所有的硬碟空間然後造成資料庫宕機。作為DBA,應該經常監控日誌的使用方式以避免問題的發生。
作為DBA,其中一個重要的責任就是監控記錄檔的大小,以確保空間不會被耗光導致資料庫伺服器宕機。
SQLServer提供了不同的DBCC命令供DBA使用,其中DBCC SQLPERF是其中一個用於監控日誌大小的常用命令,在本文中,將示範使用這個命令。除了擷取日誌的資訊,還可以用於重設等待和閂鎖狀態。
DBCC SQLPERF用於監控日誌使用方式時,只需要傳入一個參數LOGSPACE。但是它也接受其他命令。
DBCC SQLPERF(‘logspace’)命令返回三個列:DatabaseName、LogSize(MB)、LogSpaceUsed(%)
步驟:
1、 開啟SSMS然後新開一個查詢時段。
2、 在查詢時段中輸入以下代碼:
USE tempdbGOIF OBJECT_ID(‘dbo.#tbl_DBLogSpaceUsage‘) IS NOT NULL BEGIN DROP TABLE dbo.#tbl_DBLogSpaceUsage ENDCREATE TABLE dbo.#tbl_DBLogSpaceUsage ( DatabaseName NVARCHAR(128) , LogSize NVARCHAR(25) , LogSpaceUsed NVARCHAR(25) , [Status] TINYINT )INSERT INTO dbo.#tbl_DBLogSpaceUsage EXEC ( ‘DBCC SQLPERF(LOGSPACE)‘ )--查詢全部結果:SELECT DatabaseName , LogSize , LogSpaceUsed , [Status]FROM dbo.#tbl_DBLogSpaceUsageGO--查詢特定資料庫的結果:SELECT DatabaseName , LogSize AS LogSizeInMB , LogSpaceUsed LogspaceUsed_In_Percent , [Status]FROM dbo.#tbl_DBLogSpaceUsageWHERE Databasename = ‘AdventureWorks‘GO
分析:
本例中建立了一個暫存資料表,然後調用DBCC SQLPERF來把資料插入表中。由於DBCC命令需要用EXEC來執行,所以使用動態SQL來實現。根據返回的結果可以預測是否有必要馬上執行記錄備份操作(完整備份不截斷日誌,也就不會釋放日誌空間)。
擴充資訊:
可以改進這個語句來擷取匯總值,在一段時間之後,表就存放了日誌使用資訊的記錄。可以用於分析日誌的增長情況。
第三章——使用系統函數、預存程序和DBCC SQLPERF命令來監控SQLServer(3)