Я хотел бы настроить запланированную задачу для запуска каждые пятнадцать минут на рабочем веб-сервере, который будет запускать LogParser в сегодняшнем файле журнала IIS и вставлять его в таблицу базы данных SQL Server.
Как я могу гарантировать, что я не копирую какие-либо повторяющиеся данные, но в то же время гарантирую, что все записи были скопированы?
Также, как мне заставить LogParser всегда просматривать текущий файл журнала без выполнения дорогостоящих запросов, таких как SELECT * FROM ex*.log
и используя дату и время?
До сих пор я играл с:
SELECT *
FROM \\Path\To\Logs\ex*.log
WHERE date = SYSTEM_DATE()
AND time > SUB(SYSTEM_TIME(), TO_TIMESTAMP('00:30', 'hh:mm'))
Однако, если я буду запускать это каждые полчаса, я обязательно получу повторяющиеся записи. Кроме того, если это не сработает по какой-либо причине, у меня будут отсутствующие данные, которые я устраню, просто перезаписав весь файл за предыдущий день каждое утро.
Какие-нибудь советы?
Вы проверили переключатель «-iCheckPoint»? Он хранит временную метку последнего запуска и обращается только к последующим записям.
Я преодолел эту проблему, просто создав ПЕРВИЧНЫЙ КЛЮЧ в столбце RecordNumber в таблице SQL-сервера, что помогло предотвратить дублирование.
Кроме того, в кластерной среде я преодолел это, создав составной ПЕРВИЧНЫЙ КЛЮЧ на (ComputerName, RecordNumber), и это сработало отлично, поскольку в моей среде это всегда была уникальная комбинация.
При намеренном тестировании синтаксического анализа дублированного журнала в LOG PARSER он обнаружил ожидаемую ошибку «нарушение первичного ключа» на самом экране LOG PARSER .... и проблема была решена.
После некоторой игры я действительно могу ответить на часть своего вопроса.
Код для просмотра только сегодняшнего журнала IIS:
SELECT *
FROM \\Path\To\Logs\ex%date:~8,2%%date:~3,2%%date:~0,2%.log
Я не уверен, работает ли это для дат, которые не являются стандартами Великобритании, но это работает для меня. Приведенный выше код генерирует это для сегодняшней даты, 24/02/2011:
SELECT *
FROM \\Path\To\Logs\ex110224.log