«

»

jun 05

Acompanhando a utilização do TLog

Complementando o artigo sobre a estrutura do Transaction Log, vamos ver como obter informações importantes sobre o TLog para acompanharmos sua utilização e assim conhecermos esta informação dentro do nosso ambiente.

Iremos criar duas Stored Procedures (SP), a uspLogSpace para obtermos as informações através do DBCC SQLPERF e a uspRegisterLogSpace para inserirmos estas informações em uma tabela e assim mantermos um histórico.

Antes de começarmos, vamos dar uma olhada no retorno do DBCC SQLPERF(logspace):

 

 

Log Size (MB): espaço disponível para o arquivo de TLog. É o que o arquivo tlog.ldf ocupa em disco.
Log Space Used (%): porcentagem utilizada do arquivo de TLog.
Status: é sempre zero, vamos excluir esta informação desnecessária na nossa tabela.

Ficou mais claro o que vamos armazenar em nossa tabela? Tirando a coluna Status que é sempre zero, é tudo muito útil. Teremos também a coluna logDate portanto vamos criar a tabela para armazenar estes registros:

 

CREATE TABLE dbo.TlogUtilization
(
id INT IDENTITY (1,1),
logDate datetime DEFAULT GETDATE(),
databaseName sysname,
logSize decimal(18,5),
logUsed decimal(18,5) )
GO

 

Agora com a tabela criada, podemos criar as SPs e utilizá-las. Primeiro, vamos criar a uspLogSpace que obtém os dados através do DBCC SQLPERF(logspace):

 

— cria a procedure upsLogSpace
CREATE PROC dbo.uspLogSpace
AS
DBCC SQLPERF(logspace)
GO

 

 Com a SP uspLogSpace criada, vamos criar a SP uspRegisterLogSpace

 

— cria a procedure upsRegisterLogSpace
CREATE PROC dbo.uspRegisterLogSpace
AS
SET NOCOUNT ON  

 

— cria uma tabela temporária para armazenar
— o resultado do DBCC SQLPERF
CREATE TABLE #tempResult
(
databaseName sysname,
logSize decimal(18,5),
logUsed decimal(18,5),
status INT

— insere os dados do DBCC SQLPERF usando a procedure criada anteriormente
INSERT INTO #tempResult
EXEC uspLogSpace

— transfere os dados para a tabela fixa

INSERT INTO TlogUtilization (databaseName, logSize, logUsed)

SELECT
databasename, logSize, logUsed FROM #tempResult

— exclui a tabela temporária
DROP TABLE #tempResult
GO

 

Agora temos a tabela populada com as primeiras informações sobre o TLog. Sempre que quiser coletar estas informações, basta executar a SP uspRegisterLogSpace:

 

EXEC uspRegisterLogSpace

 

Sugiro que coloque a execução da SP uspRegisterLogSpace em seu Maintenance Plan para coletar os dados todas as noites. Assim quando quiser saber a média de crescimento da utilização do arquivo ou quanto ele cresceu na semana passada fica fácil.

 

Se você utiliza tamanho fixo no TLog (recomendado), esta semana teremos um script que envia email caso a utilização do TLog ultrapasse 70%.

 

Quem quiser saber mais sobre o comando DBCC SQLPERF, segue a fonte:

 

http://msdn.microsoft.com/pt-br/library/ms189768.aspx

 .

Deixe uma resposta