Monitor de Espaço Livre (\%) no Log de Transações para Bancos de Dados 2012
Monitor de Espaço Livre (%) no Log de Transações para Bancos de Dados SQL 2012
Um estado não íntegro é causado por pouco espaço disponível em todos os arquivos de log. A insuficiência de espaço disponível pode ser ocasionada por:
Configurações de arquivo inadequadas (tamanho, tamanho máximo, crescimento automático etc.)
Espaço restante na mídia inadequado
Falta de backups regulares periódicos
Não truncamento do log
A configuração “Incluir Espaço em Disco” deste monitor é definida como FALSE para cargas de trabalho que esperam o crescimento de seus arquivos.
Use o seguinte link para exibir os dados de desempenho:
Dados de Desempenho do Banco de Dados
Este monitor agrega o espaço disponível para cada arquivo de log em um banco de dados, dependendo da configuração de cada arquivo:
Sem Crescimento Automático
Para um arquivo sem crescimento automático, o espaço livre será a diferença entre o tamanho inicial de um arquivo e o espaço utilizado.
Crescimento Automático Habilitado
Além da diferença entre o tamanho do arquivo e o espaço utilizado, o espaço livre para arquivos com crescimento automático habilitado será o mínimo da diferença entre o tamanho máximo e o tamanho do arquivo e o espaço livre restante em disco.
O pouco espaço livre para os arquivos de log de banco de dados com crescimento automático pode significar que o arquivo está chegando ao limite da unidade lógica de hospedagem. Para arquivos com crescimento automático habilitado e tamanho máximo, a insuficiência de espaço livre também pode significar que o arquivo está chegando ao tamanho máximo especificado para um arquivo.
Os cálculos de espaço livre também levam em consideração que o arquivo poderá não aumentar o valor de crescimento do arquivo for maior que o valor deixado no disco, e se a diferença entre os tamanhos máximo e atual do arquivo for menor que o valor do crescimento. Nesses casos, o espaço livre disponível restante em disco não será incluído como parte do espaço livre porque não é possível que o arquivo continue a crescer.
Este problema pode ser resolvido de uma das seguintes maneiras:
Aumentando o tamanho alocado dos arquivos de log, caso o crescimento automático esteja desabilitado
Aumentando o valor do tamanho máximo de um arquivo de log, caso o crescimento automático esteja habilitado
Habilitando o crescimento automático de, pelo menos, um arquivo
Movendo arquivos de log para outra unidade com mais espaço livre, caso o espaço de crescimento seja limitado
Executando backups regulares de arquivos de log para modos de recuperação FULL e BULK-LOGGED
Investigue a razão pela qual o log não está sendo truncado:
Transações ativas abertas de longa execução
Operações de backup de longa execução
Transação replicada aberta por um longo período (Replicação Transacional)
Retardo do espelhamento atrás do servidor principal (Espelhamento do Banco de Dados)
Defina a configuração “Incluir Espaço em Disco” deste monitor como TRUE para cargas de trabalho que esperam o crescimento de seus arquivos.
Modificando os limites deste monitor para se adequar à carga de trabalho
Alternativamente, se o espaço livre do arquivo de log não for um problema para o banco de dados:
Desabilite este monitor para esse banco de dados específico ou para todos os bancos de dados
Consulte o tópico nos Manuais Online do SQL Server: Arquitetura de arquivos e grupos de arquivos
Nome | Descrição | Valor Padrão |
Prioridade do Alerta | Define a Prioridade do Alerta. | Normal |
Severidade do Alerta | Define a Severidade do Alerta. | Erro |
Habilitado | Habilita ou desabilita o fluxo de trabalho. | Não |
Gerar Alertas | Define se o fluxo de trabalho gera um Alerta. | Sim |
Intervalo (segundos) | O intervalo de tempo recorrente em segundos no qual executa-se o fluxo de trabalho. | 900 |
Limite | Valor do limite de alerta | 10 |
Tempo limite (segundos) | Especifica o tempo durante o qual o fluxo de trabalho pode ser executado antes de ser fechado e marcado como com falha. | 300 |
Target | Microsoft.SQLServer.2012.Database | ||
Parent Monitor | Microsoft.SQLServer.2012.Database.DBSpaceMonitor | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor" Accessibility="Public" Enabled="false" Target="SQL2012Core!Microsoft.SQLServer.2012.Database" ParentMonitorID="Microsoft.SQLServer.2012.Database.DBSpaceMonitor" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<Threshold>10</Threshold>
<ConnectionString>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</SqlInstanceName>
<ObjectName>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/PerformanceCounterObject$:TransactionLog</ObjectName>
<CounterName>Log Free Space (%)</CounterName>
<InstanceName/>
<DatabaseName>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<Value>$Data/Property[@Name='DBLogFreeSpacePercent']$</Value>
</Configuration>
</UnitMonitor>