Если у вас нет контроля над приложением, создающим файл, то у вас мало вариантов, кроме как опросить файл. Напишите приложение, которое регулярно опрашивает файл и записывает дельты в базу данных. Приложению нужно будет записать верхнюю отметку, к которой оно последний раз обращалось.
Еще одна проблема заключается в том, что если приложение не закрывает файл между записями, то последняя отметка времени, к которой обращались, может не обновляться, поэтому проверка возраста файла может быть ненадежной. В этом случае вам нужно реализовать что-то вроде этого процесса:
- Открыть файл журнала
- Поиск вашей последней записанной позиции EOF
- Попробуйте прочитать
- В случае успеха обработайте новые данные, пока не доберетесь до нового EOF.
- Обновить вашу постоянную позицию EOF
- Закрыть файл
Вам необходимо убедиться, что количество прочитанных байтов совпадает с позицией поиска вашего файла. Если файл журнала имеет кодировку Unicode, он может не иметь отображения 1: 1 между байтами и символами. Вам может понадобиться прочитать фрагменты файла в двоичном режиме и выполнить перевод символов из буфера.
После анализа записей в файле журнала вы можете просто вставить данные или использовать SQLBulkCopy для больших объемов данных.
Если вы можете ослабить ограничения по времени ожидания и файл журнала достаточно мал, то вы можете просто реализовать процесс, который копирует файл журнала в промежуточную область и периодически перезагружает все это.