Отслеживание того, кто внес изменения, определенные CDC.
В продолжение моего хака с датой и временем я попробовал тот же подход, добавив suser_sname в качестве нового поля со значением по умолчанию в таблице отслеживания изменений cdc. Но это, кажется, возвращает владельца процесса cdc, а не пользователя, который инициировал изменение базовой таблицы. Я также пробовал original_login, но он возвращает логин учетной записи службы sql. Снова, вероятно, связано с процессом cdc, а не с пользователем, который инициировал изменение.
Я обнаружил аналогичный вопрос о переполнении стека, но без ответа, кроме отслеживания изменений из внешнего интерфейса или с помощью триггера, который, кажется, лишает цели использование cdc. Я бы не перепечатывал, но поскольку оригинал был на стековом потоке, я решил попробовать его, особенно если R2 или 2012 представили лучший способ.
Итак, вкратце: как мне узнать, кто внес изменения в сбор данных изменений?
Вы можете добавить столбец и иметь триггер для таблицы, чтобы заполнить пользователя при вставке / обновлении / удалении, и cdc сохранит это. Вы можете получить имя пользователя либо из пользовательского интерфейса, передавая имя пользователя с использованием контекстной информации, либо из фактического сеанса.
источник
Не могли бы вы добавить поле UpdatedBy в основную таблицу, установить для него значение по умолчанию SUSER_NAME () или ORIGINAL_LOGIN () и заполнить эти данные CDC? Я верю, что это даст вам ту же информацию, которую вы ищете.
источник