Данные из другой системы реплицируются в базу данных SQL Server 2005 в режиме реального времени (в течение дня, это сотни транзакций/секунд) с использованием Goldengate. Я хотел бы узнать, была ли недавно проведена транзакция, которая скажет мне, происходит ли в настоящее время репликация. Даже в нерабочее время я могу ожидать транзакции каждые несколько минут, хотя я не буду знать, из каких из 400 таблиц она войдет.Найти самую последнюю активность базы данных SQL Server
Вот мой текущий процесс:
- ИСД триггер на самом популярном реплицированный таблицы
- Даты обновления в таблице «Sync Notification» каждый раз, когда есть какая-либо деятельность в этой таблице
- SQL Agent задание выполняется каждые несколько минут и сравнивает эту дату с GETDATE(). Если он слишком длинный, он отправляет мне электронное письмо.
Это работает по большей части, но я получаю ложные срабатывания, если есть активность в других таблицах, но не мониторинг, который может произойти в одночасье.
Любые другие предложения, не добавляющие этот же триггер для каждой таблицы в базе данных? Если я добавлю триггеры, как я могу предотвратить взаимоблокировки и утверждения в таблице «Уведомление о синхронизации»? Поскольку я не забочусь о том, что самая последняя дата была точной во время периодов высокой конкуренции, есть ли способ заставить SQL попытаться обновить дату, но просто пропустить ее, если какой-либо другой процесс заблокировал ее?
Единственный выбор «уровня приложения», который у меня есть, - это TELNET на мониторе Goldengate и попросите задержку реплики, затем экран очистит результаты. Я открыт для этого, но я бы хотел сделать что-то SQL-side, если это более осуществимо.
Какая версия SQL Server? – RedFilter
Я добавил версию к моему вопросу. – SqlRyan