Короткий ответ: нет единого решения, подходящего для всех. Это зависит от системы, но и требований, но здесь есть несколько разных подходов.
Триггеры DML
Относительно легко реализовать, потому что вы должны написать тот, который хорошо работает для одной таблицы, а затем применить его к другим таблицам.
Недостатком является то, что он может запутаться, если у вас много столов и даже больше триггеров. Управление 600 триггерами для 200 таблиц (триггер вставки, обновления и удаления для каждой таблицы) - непростая задача.
Кроме того, это может повлиять на производительность.
Создание триггеров аудита в SQL Server
Записать изменения в таблицу базы данных с помощью триггера
Изменение сбора данных
Очень прост в реализации, изначально поддерживается, но только в корпоративной версии, которая может стоить много долларов;). Другим недостатком является то, что CDC все еще не так развит, как это должно быть. Например, если вы измените свою схему, данные истории будут потеряны.
Анализ журнала транзакций
Самым большим преимуществом этого является то, что все, что вам нужно сделать, это перевести базу данных в режим полного восстановления, и вся информация будет храниться в журнале транзакций.
Однако, если вы хотите сделать это правильно, вам понадобится сторонняя программа чтения журналов, потому что она не поддерживается изначально.
Считать файл журнала (* .LDF) в SQL Server 2008
Проводник / анализатор журнала транзакций SQL Server
Если вы хотите реализовать это, я рекомендую вам попробовать некоторые из сторонних инструментов, которые существуют там. Я работал с парой инструментов из ApexSQL, но есть и хорошие инструменты от Idera и Netwrix
ApexSQL Log - аудит путем чтения журнала транзакций
ApexSQL Comply - использует трассировки в фоновом режиме, а затем анализирует эти трассы и сохраняет результаты в центральной базе данных.
Отказ от ответственности: я не связан ни с одной из компаний, упомянутых выше.