Como posso garantir que não haja duplicatas ao usar o LogParser para carregar logs do IIS no SQL Server a cada quinze minutos?

1

Eu gostaria de configurar uma tarefa agendada para ser executada a cada quinze minutos em um servidor Web de trabalho que executará o LogParser no arquivo de log do IIS atual e insira-o em uma tabela de banco de dados do SQL Server.

Como eu garantiria que não copiasse nenhum dado duplicado, mas ao mesmo tempo garantisse que todos os registros foram copiados?

Além disso, como eu faria o LogParser sempre olhar para o arquivo de log de hoje sem executar consultas caras como SELECT * FROM ex*.log e usando uma condição de data e hora?

O que eu tenho jogado até agora é:

SELECT *
FROM \Path\To\Logs\ex*.log
WHERE date = SYSTEM_DATE()
AND time > SUB(SYSTEM_TIME(), TO_TIMESTAMP('00:30', 'hh:mm'))

No entanto, se eu corri isso a cada meia hora, tenho certeza de obter entradas duplicadas. Além disso, se não funcionasse por qualquer motivo, eu acabaria com dados perdidos que eliminaria apenas sobrescrevendo todo o arquivo do dia anterior todas as manhãs.

Alguma dica?

    
por Ian Roke 24.02.2011 / 12:31

3 respostas

3

Você marcou a opção "-iCheckPoint"? Ele armazena um registro de data e hora da última execução e acessa apenas registros subseqüentes.

    
por 17.12.2011 / 05:01
0

Depois de algumas brincadeiras, posso realmente responder parte da minha própria pergunta.

O código para poder ver apenas o log do IIS de hoje é:

SELECT *
FROM \Path\To\Logs\ex%date:~8,2%%date:~3,2%%date:~0,2%.log

Não sei se isso funciona para datas que não são do Reino Unido, mas isso funciona para mim. O código acima gera isso para a data de hoje que é 24/02/2011:

SELECT *
FROM \Path\To\Logs\ex110224.log
    
por 24.02.2011 / 13:08
0

Eu superei esse problema simplesmente criando uma PRIMARY KEY na coluna RecordNumber na tabela do SQL Server, o que ajudou a parar as duplicatas.

Além disso, em um ambiente em cluster, superei isso criando uma PRIMARY KEY composta em (ComputerName, RecordNumber) e isso funcionou muito bem, já que sempre foi uma combinação exclusiva em meu ambiente.

Quando intencionalmente testou uma análise de log duplicada no LOG PARSER, ela mostrou o erro esperado de 'violação de chave primária' na própria tela PARSER do LOG .... e problema resolvido.

    
por 07.11.2015 / 18:54