Нещодавно ми також почали дивитися на CDC. Я не фахівець з цього питання, але, думаю, у мене є відповіді на ваші запитання.
Здебільшого CDC допоможе вам досягти своєї цілі цілком простежуваної історії, але я не думаю, що вона все пробуде там.
По-перше:
ми часто вносимо зміни в схему бази даних ... Чи існує механізм оновлення таблиці CDC до нової схеми
І саме тут я думаю, що CDC вас провалить. Документація MSDN у розділі "Розуміння відстеження змін змін" досить зрозуміла, що вона не відстежує зміни схеми для вас. Наприклад, за допомогою Alter Table Add Column
:
Якщо до таблиці відстежених змін додано новий стовпець, додавання стовпця не відстежується. Відслідковуються лише оновлення та зміни, внесені до нового стовпця.
Drop Column
трохи складніше.
Однак вам слід використовувати сценарії БД для зміни вашої схеми, тому вам не обов’язково покладатися тут на CDC. Це дозволяє узгоджувати схеми забезпечення якості та виробництва. І зміна QA повинна виконуватися за сценарієм, щоб ті самі зміни можна було застосувати до Prod. Витягнути зміни схеми з цих сценаріїв не повинно бути надто важко. Це може означати, що "часовий" вимір вашої історії визначається версією замість фактичного часу, але кінцевий результат буде таким самим.
Якщо у вас його ще немає, створіть таблицю для відстеження версії схеми бази даних. А потім помістіть таблицю версій схеми бази даних під CDC, щоб ви могли вирівняти макроскопічні зміни в схемі проти мікроскопічних змін у певній таблиці.
Наскільки я розумію, ви все ще бачите дані, додані до нового стовпця (-ів) незалежно від того, що CDC не відображає зміни схеми. І міграцію даних із таблиці в таблицю слід також збирати CDC.
Чи є найкращі практики щодо роботи з захопленими даними під час міграції схеми бази даних?
Ставтесь до нього так, як ви ставитесь до аудиту. Вам потрібно зрозуміти, що це за обстеження, чому ви його вивчаєте, і як довго вам потрібно зберігати цю інформацію. Обсяг та утримання - це два найбільших помилки, коли мова йде про таке завдання.
Інструменти звітності CDC зрозуміло суворі, тому ви повинні знати контекст змін. Занадто просто сказати "відстежуй усе !" і в кінцевому підсумку немає нічого корисного в результаті. Так само ви можете подвоїти розмір вашої бази даних, зберігаючи копію кожної зміни. На високому стовпчику з багатьма вставками та видаленнями ви закінчите астрономічне зростання. Це само по собі не погано, але вам потрібно сплатити бюджет на зростання та мати засоби для вивчення всіх даних, що утворюються.
Таким чином, ви повертаєтесь до розуміння того, чому вас підштовхують до повного відстеження. Безумовно, є вагомі причини цієї вимоги. Але ви не зможете структурувати ефективний аудит бази даних, поки не дізнаєтесь, чому ви повинні відповідати цій вимозі.