Como posso ser alertado quando o crescimento automático ocorre em um banco de dados do SQL Server?

5

Nossos bancos de dados do SharePoint estão configurados para a autogrow predefinida (sem sentido) de 1 MB, e preciso "convencer" o proprietário da aplicação de que isso está errado. Existe um meio de monitorar a atividade de crescimento automático do SQL Server?

Gostaria de poder informar com que frequência esta atividade está ocorrendo com a configuração de 1 MB.

    
por Jeff Costa 29.06.2009 / 18:00

4 respostas

3

Como mais munição para você, confira este post do blog que eu fiz, que discute o crescimento automático de arquivos de dados: Importância do gerenciamento do tamanho dos arquivos de dados .

    
por 29.06.2009 / 19:32
3

As auto-expansões do arquivo de log são relatadas nos logs do SQL ou no log de eventos do aplicativo. Você também pode usar coisas como SQL Trace ou SQL Profiler para monitorar eventos SQL. Aqui está um artigo do MSDN que discute monitoramento de eventos do SQL .

EDITAR: No log de eventos do aplicativo, procure a ID de evento 5144 para os eventos de cancelamento de crescimento automático e 5145 para os eventos de autopreenchimento com êxito / concluído.

EDIT2: Para procurar eventos de registro de arquivo db no seu registro SQL, você pode usar isto:

EXEC xp_readerrorlog 0,1,'autogrow'

Incremente o 0 para que o xp_readerrorlog use arquivos de log de erros arquivados. 0 a (n-1) onde n é o número de arquivos de log de erros que você possui.

Você também pode configurar notificações de eventos para um evento de crescimento automático. Algo parecido com isto:

CREATE EVENT NOTIFICATION data_file_autogrow_notifier
ON DATABASE
FOR DATA_FILE_AUTO_GROW
TO SERVICE 'NotifyAutogrow', 'current database' ;

ou para o arquivo de log:

CREATE EVENT NOTIFICATION log_file_autogrow_notifier
ON DATABASE
FOR LOG_FILE_AUTO_GROW
TO SERVICE 'NotifyAutogrow', 'current database' ;

Em que NotifyAutogrow é o nome de uma instância do Service Broker. Mais informações aqui . Você precisaria configurar esse serviço para o seu ambiente.

    
por 29.06.2009 / 18:14
0

It's just always enabled, you can't disable SQL logging. If you're not seeing autogrowth events then chances are you haven't had any happen in the timeframe that your log covers. See the edit to my answer for a sql you can use to look for the autogrowth in your SQL log.

Depende do que você está falando.

Na minha experiência, o SQL Server não registrou o crescimento automático em ERRORLOG como foi sugerido, em vez disso, ele é registrado no rastreio padrão e o rastreio padrão pode ser desativado e ativado.

Para verificar se está ativado, consulte:

select name, value_in_use
from sys.configurations
where name='default trace enabled'

Caso esteja desativado, você pode ativá-lo:

sp_configure 'default trace enabled', 1
go

Não se esqueça de executar RECONFIGURE depois.

Para verificar se há autogrow eventos, você pode usar:

SELECT databaseid, filename, SUM(IntegerData*8) AS Growth, Duration, StartTime
FROM ::fn_trace_gettable('C:\SQL Server\MSSQL10_50.INSTANCENAME\MSSQL\Log\log_4.trc', default)
WHERE EventClass = 92 OR EventClass = 93
GROUP BY databaseid, filename, IntegerData, Duration, StartTime

Onde o parâmetro para fn_trace_gettable é o nome do rastreamento atual (ou arquivado).

Você pode encontrar o caminho para o rastreamento atual da seguinte forma:

SELECT path FROM sys.traces WHERE is_default = 1;
    
por 26.03.2012 / 14:56
0

As auto-expansões do arquivo de log são relatadas nos logs do SQL ou no log de eventos do aplicativo. Você também pode usar coisas como SQL Trace ou SQL Profiler para monitorar eventos SQL.

    
por 30.12.2013 / 18:58