сбор данных с помощью CDC

Чтобы зафиксировать удаленное имя пользователя, я добавил новый столбец в свою таблицу CDC (например: - cdc.dbo_testCDC_CT), чтобы установить зарегистрированное имя пользователя SQL. т.е.; ИЗМЕНИТЬ ТАБЛИЦУ cdc.dbo_testCDC_CT ДОБАВИТЬ имя пользователя VARCHAR(20) DEFAULT(SUSER_SNAME())). Значение, поступающее в этот столбец, всегда «sa», но я зарегистрирован как проверка подлинности Windows. Почему это происходит?


person Sreepathi    schedule 29.10.2014    source источник


Ответы (3)


Прежде всего, вы никогда не должны изменять системные таблицы, сгенерированные cdc. Эта таблица была сгенерирована, когда вы включили cdc в своей таблице dbo.testCDC, и будет включать столбцы вашей исходной таблицы, а также 5 дополнительных столбцов, значение которых описано здесь: http://msdn.microsoft.com/en-us/library/bb500305(v=sql.110).aspx< /а>. Он будет удален автоматически, когда вы отключите cdc из своей таблицы.

Я рекомендую сначала прочитать о cdc и предполагаемых шаблонах использования. Хорошим началом может стать эта статья: http://technet.microsoft.com/en-us/magazine/2008.11.sql.aspx

Чтобы ответить на ваш вопрос, почему sa всегда назначался вашему столбцу: все строки в таблицах *_CT заполняются процессом чтения журнала, который в вашем случае запускается под учетной записью sa. Это не способ добавить аудит в вашу систему. Ранее упомянутая статья также может дать вам несколько советов о том, как лучше реализовать аудит.

person rrozema    schedule 25.11.2014
comment
@Sreepathi, пожалуйста, используйте кнопку «Отметить как ответ», чтобы вознаградить людей, которые потратили время, отвечая на ваши вопросы. - person rrozema; 20.10.2017

Ваше решение должно заключаться в захвате зарегистрированного имени пользователя «Изменено» или «Вставлено» и сохранении его в субъекте базовой таблицы данных самого экземпляра захвата. Таким образом, ваш экземпляр CDC также зафиксирует для вас зарегистрированное имя пользователя.

Как уже упоминалось, вы НИКОГДА не должны изменять сгенерированные системой таблицы по двум простым причинам: 1. Когда они будут восстановлены по какой-либо причине, ваши изменения будут потеряны 2. Изменение системных таблиц может привести к совершенно непредвиденным последствиям.

Надеюсь, это может помочь.

person Tony    schedule 08.09.2015

Вместо того, чтобы изменять таблицу CDC, измените базовую таблицу (основная исходная таблица для значения по умолчанию, установленного DEFAULT (SUSER_SNAME ())) COLUMN, вы получите пользователя, который удалил или вставил и обновил

person kfb    schedule 05.05.2020