Мы также недавно начали смотреть на CDC. Я не эксперт по этому вопросу, но я думаю, что у меня есть несколько ответов на ваши вопросы.
По большей части, CDC поможет вам достичь цели полностью прослеживаемой истории, но я не думаю, что она поможет вам в этом.
Прежде всего:
мы часто вносим изменения в схему базы данных ... Существует ли механизм обновления таблицы CDC до новой схемы
И здесь я думаю, что CDC подведет вас. Документация MSDN в разделе «Общие сведения об издержках отслеживания изменений» совершенно ясно, что она не будет отслеживать изменения схемы для вас. Например, с Alter Table Add Column
:
Если в таблицу отслеживания изменений добавляется новый столбец, добавление столбца не отслеживается. Отслеживаются только обновления и изменения, внесенные в новый столбец.
Drop Column
немного сложнее.
Однако вы должны использовать сценарии БД для изменения вашей схемы, поэтому вам не обязательно полагаться на CDC здесь. Это позволяет вам иметь согласованность между вашими схемами контроля качества и производства. И изменение QA должно быть выполнено скриптом, чтобы те же самые изменения могли быть применены к Prod. Не должно быть слишком сложно извлечь изменения схемы из этих сценариев. Это может означать, что измерение времени в вашей истории будет зависеть от версии, а не от фактического времени, но конечный результат будет таким же.
Если у вас его еще нет, создайте таблицу для отслеживания версии схемы базы данных. Затем поместите эту таблицу версий схемы базы данных в CDC, чтобы вы могли сопоставить макроскопические изменения со схемой с микроскопическими изменениями в конкретной таблице.
Насколько я понимаю, вы все равно должны видеть данные, добавленные в новый столбец (столбцы), независимо от того, где CDC не показывает изменение схемы. И миграция данных из таблицы в таблицу также должна выполняться CDC.
Существуют ли передовые методики работы с захваченными данными при переносе схемы базы данных?
Относитесь к этому так же, как к ревизии. Вы должны понимать, что именно вы исследуете, почему вы это исследуете и как долго вам нужно хранить эту информацию. Сфера охвата и удержание - две самые большие ошибки, когда дело доходит до такой задачи.
Инструменты отчетности CDC понятны аскетично, поэтому вы должны знать контекст изменений. Слишком легко сказать "отслеживай все !" и в итоге ничего не получится пригодным для использования. Аналогично, вы можете удвоить размер своей базы данных, сохранив копию каждого изменения. На высокопроизводительном столе с большим количеством вставок и удалений вы получите астрономический рост. Само по себе это неплохо, но вам нужно составить бюджет для этого роста и иметь возможность изучить все сгенерированные данные.
Таким образом, это возвращает вас к пониманию того, почему вас заставляют полностью отслеживать. Есть, конечно, веские причины для этого требования. Но вы не сможете структурировать эффективный аудит базы данных, пока не поймете, почему вы должны выполнить это требование.