На работе мы только начали создавать структуру аудита для нашей базы данных (т. Е. Регистрировать, какие данные были изменены при ее создании или обновлении).SQL Server Triggers - группировка по транзакциям
Мы бы очень хотели реализовать это с помощью триггеров, поскольку данные иногда импортируются в систему из других мест, а не только через интерфейс. Кажется, это довольно common solution.
Однако я хотел бы сделать одно дополнение: если пользователь запускает обновление, которое обновляет более одной таблицы, я бы хотел, чтобы они были сгруппированы вместе в пакетном режиме (то есть для создания уникального идентификатора пакета для каждого набора обновлений).
Проблема заключается в получении идентификатора партии из триггера. Каждое обновление будет выполняться внутри транзакции, поэтому мне было интересно, могу ли я использовать идентификатор транзакции для создания идентификатора партии. Однако я не могу найти способ доступа к идентификатору транзакции в любом месте T-SQL.
У кого-нибудь есть идеи?
P.S. - Мы бежим SQL Server 2008, если это делает никакой разницы
Спасибо, это блестяще! – 2009-03-16 16:29:57
Следите за разрешениями с этим, так как для этого представления требуется разрешение «ПРОСМОТР СЕРВЕРА», которые стандартные пользователи не будут иметь и, следовательно, приведет к сбою триггера. –
В качестве продолжения, у Remus есть решение проблемы разрешения с использованием подписи кода http://stackoverflow.com/questions/1265386/current-transaction-id-in-an-audit-trigger/1267562#1267562 –