CDC включен, но таблица cdc.dbo‹table-name›_CT не заполняется

Я включил CDC, выполнив следующие действия:

exec sys.sp_cdc_enable_db;

exec sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'table_name',
@role_name = N'CDC_Access',
@supports_net_changes = 1;

Я вижу, что таблица CT была создана в Системных таблицах; Агент SQL Server включен, и я вижу, что задание cdc.db_name_capture создано и выполняется.

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

Почему эта одна таблица не собирает данные, даже если другие таблицы?

Я читал в Интернете, что, возможно, это как-то связано с тем, что журнал транзакций становится слишком большим, но у меня все еще остается много места на диске (свободно ~ 2 ТБ).

Что я могу сделать, чтобы отладить эту проблему?

Огромное спасибо заранее! :)

Изменить 1

Вот результат exec sys.sp_cdc_help_change_data_capture. subscription_events — это таблица, с которой у меня возникли проблемы.

введите здесь описание изображения

Редактировать 2

Вот результат exec sys.sp_cdc_help_jobs;.

введите здесь описание изображения

Редактировать 3

Вот результат select * from sys.dm_cdc_log_scan_sessions;.

введите здесь описание изображения

Вот результат select * from sys.dm_cdc_errors;

введите здесь описание изображения

Редактировать 4

Запуск select serverproperty('productversion') предоставляет следующий номер версии: 11.0.3401.0.


person FooBar    schedule 19.05.2014    source источник
comment
Вы проверили вывод sys.sp_cdc_help_change_data_capture? Это нормально?   -  person Endrju    schedule 19.05.2014
comment
Я думаю, это нормально. Я запустил exec sys.sp_cdc_change_data_capture и увидел там свою новую таблицу наряду с другими таблицами, которые функционируют должным образом. Я добавлю вывод этой строки в качестве редактирования моего вопроса.   -  person FooBar    schedule 19.05.2014
comment
Итак, вы уверены, что в этой таблице происходят изменения? Кроме того, по умолчанию задержка захвата составляет 5 секунд, изменения в исходной таблице могут быть не сразу видны в таблице CDC. Но я предполагаю, что вы проверяли это несколько раз в течение периода, превышающего 5 секунд. Верно? :-)   -  person Endrju    schedule 19.05.2014
comment
Да, я наблюдал, как увеличивается размер таблицы subscribe_events (переходя в Свойства->Хранилище) :). Я оставил базу данных в этом состоянии на выходных, а в таблице CT было 0 строк, хотя за выходные было вставлено много тысяч строк. Сегодня утром я отключил CDC на этом столе, а затем снова включил его, но проблема не устранена.   -  person FooBar    schedule 19.05.2014
comment
Тогда попробуйте задания. Пожалуйста, опубликуйте результат exec sp_cdc_help_jobs   -  person Endrju    schedule 19.05.2014
comment
Хорошо, я добавил вывод этой команды. :)   -  person FooBar    schedule 19.05.2014
comment
Интересно, есть ли в других таблицах текущие изменения. Проверь это. Может быть, выполняется сканирование журнала CDC, и ни одна из таблиц не изменяется? У нас есть 3 DMV: sys.dm_cdc_log_scan_sessions, sys.dm_repl_traninfo и sys.dm_cdc_errors. Пожалуйста, проверьте их тоже. Особенно первый с end_time NULL.   -  person Endrju    schedule 19.05.2014
comment
Я добавил вывод sys.dm_cdc_log_scan_sessions и sys.dm_cdc_errors. Таблица sys.dm_repl_traninfo огромна, и я не знал, какую информацию искать. Я никогда раньше не пользовался этими таблицами, так что спасибо, что упомянули о них; что я здесь ищу?   -  person FooBar    schedule 19.05.2014
comment
Ну и ошибки :-) Теперь все начинает проясняться. Какая версия вашего SQL Server? (select serverproperty('productversion') ). Мы могли бы быть свидетелями ошибки здесь. Я думаю, что краткосрочное решение — перезапустить задание захвата, но в долгосрочной перспективе может потребоваться установка накопительного обновления.   -  person Endrju    schedule 19.05.2014
comment
Кроме того, я только что проверил некоторые другие таблицы CT, и количество строк продолжает расти.   -  person FooBar    schedule 19.05.2014
comment
Запуск select serverproperty('productversion') предоставляет следующий номер версии: 11.0.3401.0.   -  person FooBar    schedule 19.05.2014
comment
ОК, попробуйте сделать следующее: 1) остановить задание захвата; 2) запустить EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1; EXEC sp_replflush; 3) закройте это окно запроса, в котором вы выполняли эти команды; 4) запустить задание захвата; 5) проверьте таблицу sys.dm_cdc_errors на наличие новых строк и проверьте, стали ли видны изменения.   -  person Endrju    schedule 19.05.2014
comment
Кажется, это сработало! Я вижу данные об изменении в таблице cdc.dbo_subscription_events_CT! Большое спасибо! :) Значит, это известная ошибка SQL Server? Кроме того, если вы добавите это как ответ, я отмечу его как таковой.   -  person FooBar    schedule 20.05.2014
comment
Кроме того, таблица sys.dm_cdc_errors пуста.   -  person FooBar    schedule 20.05.2014
comment
Нет, это не известная ошибка, я полагаю. В вашей базе данных могут быть какие-то неясные вещи. Следите за этим в будущем.   -  person Endrju    schedule 20.05.2014


Ответы (1)


Сделайте следующее:

  1. Остановить задание захвата;
  2. Выполнить EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1; EXEC sp_replflush;
  3. Закройте это окно запроса, в котором вы выполняли эти команды;
  4. Запустите задание захвата;
  5. Проверьте таблицу sys.dm_cdc_errors на наличие новых строк и убедитесь, что изменения стали видны.
person Endrju    schedule 19.05.2014
comment
Проверка таблицы sys.dm_cdc_errors показала, что я не связывал файлы с файловой группой. Сообщение об ошибке: файловой группе «CDC» не назначены файлы. Таблицы, индексы, текстовые столбцы, столбцы ntext и столбцы изображений не могут быть заполнены в этой файловой группе, пока не будет добавлен файл. - person manu97; 20.11.2017