Как хранить измененные данные (CDC) SQL Server 2012

Я несколько раз подробно читал о настройке функций CDC в SQL Server 2012. . Однако есть очень запутанная графика

волшебное хранилище данных

это, кажется, демонстрирует, что ваши данные CDC могут храниться в другой базе данных (хранилище данных). Однако это не то, что я бы считал действительно «хранящим».

Когда вы следуете инструкциям по настройке 'сбора данных. Насколько я понимаю, сбор данных предназначен для отслеживания активности вашей базы данных с течением времени, а не для того, чтобы вернуться назад и просмотреть изменения в конкретном наборе строк.

Так что я, должно быть, упускаю какую-то фундаментальную часть логики. Есть ли какая-то волшебная функция CDC для массовой вставки или перемещения данных из изменяемой таблицы cdc (которая по умолчанию хранится только 3 дня) или мне нужно написать собственное задание SSIS/ETL для каждой таблицы, которую я настраиваю для CDC? Я в порядке, пишу задание SSIS, но похоже, что это, скорее всего, неправильный подход. Если кто-нибудь может указать мне учебник, посвященный хранению данных cdc в другой базе данных или экземпляре, я был бы признателен. Мои поиски просто продолжают указывать на сбор данных или CDC, и ни один из них на самом деле не хранит 100% истории изменений.

Спасибо за просьбу отредактировать. Я думал, что это сбивает с толку:

Мои требования следующие:

  1. Зафиксируйте все изменения в определенном наборе таблиц (CDC вам в помощь, и это работает)

  2. Храните данные об изменениях в другой реляционной базе данных в течение 7 лет. т.е. Иметь возможность вернуться к определенной записи и получить все изменения, внесенные в нее за любой период времени. (Это та часть, которая меня смущает в графике MSDN и очевидном решении).

  3. Задание Data ETL должно, по возможности, выполняться в режиме реального времени (не в пакетном режиме или по расписанию).


person macm    schedule 25.03.2015    source источник
comment
Помогите понять, почему не сохраняет? Кроме того, я не понимаю Мое понимание сбора данных предназначено для мониторинга активности вашей базы данных с течением времени, а не для того, чтобы вернуться и просмотреть изменения в конкретном наборе строк. Возможно, ваш вопрос будет улучшен, если четко указать, чего вы пытаетесь достичь. Похоже, что у вас есть идеи о том, как долго вам нужно хранить ваши данные и т. д., поэтому нажмите кнопку редактирования и помогите нам понять, что вам нужно.   -  person billinkc    schedule 25.03.2015
comment
Отредактировано для ясности! Спасибо bilinkc.   -  person macm    schedule 25.03.2015
comment
Я думаю, что есть такие варианты, как NET и ВСЕ некоторые другие, которые можно использовать для проверки того, какие операции вы выполнили с конкретной записью, которая может различаться по номеру от 0 до 5.   -  person koushik veldanda    schedule 25.03.2015


Ответы (1)


Как технология CDC в основном используется для облегчения поддержания вторичного хранилища данных (например, хранилища данных) в актуальном состоянии с учетом изменений, которые произошли в первичном. Тем не менее, ничто не говорит о том, что вы не можете делать то, что хотите, с CDC. По сути, вы настроите CDC для таблиц, для которых вы хотите отслеживать изменения, и периодически вызываете cdc.fn_cdc_get_all_changes... или cdc.fn_cdc_get_net_changes... (в зависимости от того, что подходит для вашей ситуации, хотя я предполагаю все изменения по вашему описанию), чтобы получить изменения для этих таблиц, после чего вы сохраните необработанные данные cdc в другой таблице, которую вы указали для их хранения.

Обратите внимание, однако, что требования к удержанию являются грубыми. Например, вы не можете просто удалить записи по истечении периода хранения, потому что, пока запись все еще активна, вам нужна непрерывная цепочка изменений до исходной вставки записи.

person Ben Thul    schedule 25.03.2015
comment
Ваш ответ говорит только о первом требовании, которое я указал, у меня уже есть запуск. Изображение, предоставленное msdn, наводит вас на мысль, что сохранение изменений в отдельной базе данных является частью настройки CDC, но это не так. Является ли единственным вариантом настроить для этого собственное задание ssis? - person macm; 25.03.2015
comment
SSIS — не единственный вариант. Я дал вам названия функций, которые вы будете использовать для внесения изменений вручную. А что касается схемы, то схема подразумевает процесс ETL в ХД (как я уже говорил выше). Вы можете пропустить T (то есть преобразование) и просто загрузить необработанные записи CDC в другом месте. А что касается вашего требования к реальному времени, CDC на самом деле не был создан для этого, но вы могли бы сделать это с тем, что, как я полагаю, было бы много накладных расходов. Вы можете указать любые конечные точки для интервала обработки для функций cdc get. - person Ben Thul; 25.03.2015