Я обрабатываю все свои контрольные журналы непосредственно в базе данных, используя триггеры. Когда аудит происходит только с изменениями, которые поступают из кода, если кто-то возиться с данными через прямой запрос SQL или через Management Studio, вы не получите никакого следа. Я также обнаружил, что настройки, основанные на триггерах, работают лучше, чем настройки на основе кода, затрачивая меньше усилий.
Я использую хранимую процедуру, которая создает таблицу аудита для каждой таблицы и устанавливает все триггеры. Однако подобная настройка может указывать на одну таблицу аудита, если хотите.
Как только таблица аудита существует, вы можете извлечь данные из нее через Subsonic.