[セットトップ]第3章-システム関数、ストレージプロセス、DBCC SQLPERFコマンドを使用してSQLServerを監視する(3)

2191 ワード

本文はこのシリーズの最後の編である.DBCCコマンドを使用してSQLServerログ領域の使用状況を監視する方法.
 
前言:
 
各データベースにはトランザクション・ログが必要です.トランザクション・ログは、各DMLアクションを記録し、SQLServerのデータベースに適用します.リカバリ・モードがFULLでDMLオペレーションが頻繁にある場合、ログは非常に速く増加します.リカバリ・モードはsimpleです.データベースがトランザクション・レプリケーションまたはマージ・レプリケーションの場合、ログは通常増加します.ログが頻繁にバックアップされず、ログ・ファイルの増加に制限がない場合は、すべてのハードディスク(HDD)領域が消費され、データベースがダウンタイムになる可能性があります.DBAとしては、問題を回避するためにログの使用状況を常に監視する必要があります.
 
DBAとして重要な役割の1つは、ログ・ファイルのサイズを監視して、スペースが消費されずにデータベース・サーバがダウンタイムしないようにすることです.
 
SQLServerは、DBA用に異なるDBCCコマンドを提供し、DBCC SQLPERFはログサイズを監視するための一般的なコマンドの1つであり、本明細書では、このコマンドの使用を実証する.ログの情報を取得するだけでなく、待機状態とラッチ状態をリセットすることもできます.
 
DBCCC SQLPERFは、ログの使用状況を監視するために使用される場合、1つのパラメータLOGSPACEを入力するだけです.しかし、他のコマンドも受け入れます.
DBCC SQLPERF(「logspace」)コマンドは、DatabaseName、LogSize(MB)、LogSpaceUsed(%)の3つの列を返します.
 
手順:
 
1、SSMSを開き、新しいクエリーウィンドウを開く.
 
2.クエリー・ウィンドウに次のコードを入力します.
 
USE tempdb
GO
IF OBJECT_ID('dbo.#tbl_DBLogSpaceUsage') IS NOT NULL 
    BEGIN
        DROP TABLE dbo.#tbl_DBLogSpaceUsage
    END

CREATE 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_DBLogSpaceUsage
GO
--          :
SELECT  DatabaseName ,
        LogSize AS LogSizeInMB ,
        LogSpaceUsed LogspaceUsed_In_Percent ,
        [Status]
FROM    dbo.#tbl_DBLogSpaceUsage
WHERE   Databasename = 'AdventureWorks'
GO

 
分析:
 
この例では、テンポラリ・テーブルを作成し、DBCC SQLPERFを呼び出してテーブルにデータを挿入します.DBCCコマンドはEXECで実行する必要があるため、ダイナミックSQLで実現します.返された結果に基づいて、ログ・バックアップ・オペレーションをすぐに実行する必要があるかどうかを予測できます(完全なバックアップではログが切断されず、ログ・スペースが解放されません). 
 
拡張情報:
この文は、要約値を取得するために改善され、しばらくすると、テーブルにログ使用情報の履歴が格納されます.ログの成長状況を分析するために使用できます.