Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Change Data Capture: Все таблицы, которые были изменены во время одной транзакции  [new]
happy_end
Member

Откуда:
Сообщений: 29
Добрый!
Собственно, проблема - Change Data Capture - как проще найти все таблицы, которые были изменены во время одной транзакции?
Например, я вижу, что был update для таблицы ZZZ, __$start_lsn = 777, в cdc.lsn_time_mapping - tran_id = 22.
Я знаю, что эта транзакция должна изменить данные еще в n таблицах.
Как сделать список этих n таблиц? Неужели сканировать все в поисках __$start_lsn = 777?
12 сен 12, 13:50    [13151679]     Ответить | Цитировать Сообщить модератору
 Re: Change Data Capture: Все таблицы, которые были изменены во время одной транзакции  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Неизвестно кто на ком стоял.
Какова цель и/или проблема?

Для одноразовой проблемы нормально, лопитите.
Но если надо массово (автоматизировать), то как бэ изначально известно что изменялось, код же на руках (скрипты, процедуры, программы ...).
12 сен 12, 15:29    [13152471]     Ответить | Цитировать Сообщить модератору
 Re: Change Data Capture: Все таблицы, которые были изменены во время одной транзакции  [new]
happy_end
Member

Откуда:
Сообщений: 29
Проблема в том, что есть около 20 процессов, которые меняют данные сразу в нескольких таблицах (иногда в нескольких десятках таблиц).
Смысл задачи - ответить на вопрос "почему в таблице А, строка Б данные именно такие и кто их поменял".
Есть tran_id, нужно определить процессс, который менял данные и изменить, если надо, все вовлеченные таблицы.
12 сен 12, 17:12    [13153305]     Ответить | Цитировать Сообщить модератору
 Re: Change Data Capture: Все таблицы, которые были изменены во время одной транзакции  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Кто менял в CDC видно.
Код имеется. Тогда он анализируется, снизу вверх. Где используется (изменяется) таблица A, ищется во всём коде - процедуры, триггера, код клиента. Учитывая данные. И так выясняется что из 20 процедур/скриптов только допустим 7 могут затронуть эту таблицу A.
Далее проверяются данные оставшиеся варианты и смотрятся остальные таблицы и так далее.

Не понимаю, в чём сложность?
Да и вообще, что сложно тупо проверить эти десятки таблиц в лоб?
Работа то одноразовая, так?

А если вам надо сделать что-то типа отчёта (часто собирающегося) для каждой ячейки CDC, то губа не дура.
Это вообще тянет на экспертную систему.
Тогда подход явно не верен.
Обычно ограничивается - кто-когда-что поменял. Но не как и не что-поменял-другое.
13 сен 12, 03:52    [13155226]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить