Это может быть обширная тема. Прежде всего: Какая версия SQL Server используется?
если вы используете SQL 2008, Change Data Capture - инструмент выбора
Эта новая функция позволяет отслеживать КАЖДЫЙ изменения, внесенные в базы данных в SQL 2008. Сюда входят изменения DDL , а также изменения данных .
Проверьте введение здесь .
Если вы используете более старую версию SQL 2008 и вам разрешено изменить DDL базы данных, опция 3 будет одним из вариантов (из того описано). Я не рекомендовал бы это, хотя, поскольку есть другие вещи, которые следует учитывать, например, что происходит, когда транзакция откатывается или когда триггеры деактивируются при массовой вставке , например?
Во всех этих случаях будет непросто заставить ваше решение работать должным образом.
Другой способ, которым вы могли бы пойти, - посмотреть файл Transaction Log . Это, безусловно, лучший, но и самый сложный способ , поскольку почти нет документации по проприетарному формату журнала. Также он привязан к конкретной версии SQL Server. Это приведет к отсутствию влияния мониторинга выбранных баз данных.
Еще один подход заключается в создании копии данных , которую необходимо отслеживать, и периодически проверять наличие различий.
Это дает то преимущество, что НЕТ изменений в исходных базах данных . А также избавиться от проблем с транзакциями или массовыми вставками. Начиная с последнего этапа следующего мониторинга вы сможете обнаружить изменения.
Влияние на производительность довольно минимально, так как для таблиц, подлежащих мониторингу, потребуется только последовательное чтение первичного индекса. И это, безусловно, самый оптимизированный способ взаимодействия с базой данных.
Однако этот подход потребует значительных усилий для развития. Я должен знать, так как это мой основной фокус с последних лет. Отметьте здесь ;)
(я надеюсь, что связывание в порядке, в данном случае, так как по теме, в противном случае я удаляю его)