Algumas semanas atrás, fiz esta pergunta . Erros registram várias perguntas e obtive a resposta de que precisava. Com base na resposta e em algumas leituras, pretendo criar os seguintes trabalhos:
- circule o log de erros assim que atingir um tamanho em Mb ou expandir para, digamos, 2 semanas
- mova o log de erros mais antigo para um local diferente quando atingirmos o limite de arquivos de logs de erros arquivados (agora temos o padrão, 6)
Na resposta à minha pergunta anterior, obtive o trecho do powershell que estou postando no final para obter o tamanho dos logs de erro. Mas é a primeira vez que tentarei fazer algo com o powershell, então não sei nem por onde começar com isso. Qualquer ajuda para configurar esses trabalhos? Talvez o powershell não seja necessário e possa ser feito usando CmdExec ou tsql? Não é que eu conheça o CmdExec, apenas perguntando sobre outras abordagens. O melhor seria o tsql, pois tenho mais experiência com ele.
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server("YOUR_SQL_SERVER_NAME")
$SqlServer.EnumErrorLogs() |
Select-Object Name, @{Name = "SizeMB"; Expression = {[System.Math]::Round($_.Size/1024/1024,2)}}
Se fosse eu, criaria um trabalho do SQL Agent para alternar o log de erros com base no tamanho ou na data. Execute-o algumas vezes ao dia e você pode até configurar alertas para notificar se o log de erros foi repetido.
Você também pode alterar a instrução IF ou adicionar uma instrução OR para verificar a data e o ciclo se tiver mais de 2 semanas ou o tempo que desejar.
EDIT: O arquivo para o ciclo baseado em data precisa ser o log de erro anterior. O log 0 sempre retornará a data atual, desde que esteja ativo, duh!
Quanto a movê-los, você pode manter até 99 arquivos de log. Você acha que suas necessidades de informações estendidas excederão 100 logs? Caso contrário, eu moveria o local do log de erros para um disco que pode conter 100 logs completos e alteraria o número máximo de logs.