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

Откуда:
Сообщений: 36
Две недели назад CDC исправно регистрировал изменения в данных. А теперь вдруг перестал.
Вношу изменения в данные, но CDC их не записывает в таблицы CT.
При этом:
1. Запуск
select name from sys.databases where is_cdc_enabled = 1

показывает что CDC включен на нужную мне базу

2. Запуск
select * from cdc.change_tables

показывает что CDC включен на нужные мне таблицы


Что проверить еще, что посмотреть, почему CDC может не работать?
22 июл 15, 16:58    [17922389]     Ответить | Цитировать Сообщить модератору
 Re: Почему CDC может не работать?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArikKh
но CDC их не записывает в таблицы CT.

We recommend that you do not query the system tables directly. Instead, execute the cdc.fn_cdc_get_all_changes_<capture_instance> and cdc.fn_cdc_get_net_changes_<capture_instance> functions.
22 июл 15, 17:18    [17922503]     Ответить | Цитировать Сообщить модератору
 Re: Почему CDC может не работать?  [new]
ArikKh
Member

Откуда:
Сообщений: 36
Функции тоже ничего не возвращают.
22 июл 15, 17:31    [17922585]     Ответить | Цитировать Сообщить модератору
 Re: Почему CDC может не работать?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
ArikKh,

В логи CDC job'а не догадались еще посмотреть?
Ну и SQL Server Agent то запущен?

select * from  sys.dm_cdc_log_scan_sessions
22 июл 15, 20:54    [17923164]     Ответить | Цитировать Сообщить модератору
 Re: Почему CDC может не работать?  [new]
Павел-П
Member

Откуда:
Сообщений: 234
Glory
ArikKh
но CDC их не записывает в таблицы CT.

We recommend that you do not query the system tables directly. Instead, execute the cdc.fn_cdc_get_all_changes_<capture_instance> and cdc.fn_cdc_get_net_changes_<capture_instance> functions.


Рекоммендовать они могут много чего. Вот только с таким походом много приколов.
Там же в HELP написано для cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

If the specified LSN range does not fall within the change tracking timeline for the capture instance, the function returns error 208 ("An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes.").

Т.е. Вы пытаетесь забрать все изменения - а Вам ошибка.
24 июл 15, 16:12    [17931065]     Ответить | Цитировать Сообщить модератору
 Re: Почему CDC может не работать?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Павел-П
Glory
пропущено...

We recommend that you do not query the system tables directly. Instead, execute the cdc.fn_cdc_get_all_changes_<capture_instance> and cdc.fn_cdc_get_net_changes_<capture_instance> functions.


Рекоммендовать они могут много чего. Вот только с таким походом много приколов.
Там же в HELP написано для cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

If the specified LSN range does not fall within the change tracking timeline for the capture instance, the function returns error 208 ("An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes.").

Т.е. Вы пытаетесь забрать все изменения - а Вам ошибка.
Вы щас прикалываетесь или правда не понимаете?
Т.е. скажем вы неизвестно сколько не выгружали данные из CDC таблиц, там уже все почистилось 3 раза, логи удалены, а тут вы такой оба, а у на ка сервер, дай ка мне все изменения с LSN за позапрошлый год, а сервер вам их сам придумает и вернет, да?
24 июл 15, 22:38    [17932698]     Ответить | Цитировать Сообщить модератору
 Re: Почему CDC может не работать?  [new]
Павел-П
Member

Откуда:
Сообщений: 234
Mind
Вы щас прикалываетесь или правда не понимаете?
Т.е. скажем вы неизвестно сколько не выгружали данные из CDC таблиц, там уже все почистилось 3 раза, логи удалены, а тут вы такой оба, а у на ка сервер, дай ка мне все изменения с LSN за позапрошлый год, а сервер вам их сам придумает и вернет, да?


1. Предположим есть у Вас таблица. Там есть колонка типа дата и вы просите вернуть все строки начиная с какой-нибудь даты. Ну и предположим, что данные за начальную дату нет. Сервер Вам даты выдумывает? Нет он Вам ничего не возвращает.

2. Вообще проблема с тектстом ошибки давно известная и это косячок от Microsoft. Просто так напильник лег на текущие ограничения. https://connect.microsoft.com/SQLServer/feedback/details/303972/cdc-function-error-messages-are-misleading

3. Вы не поверите, эту ошибку вы получите даже на валидном LSN, который не чистился. Достаточно сконфигурировать cdc на таблице просто позже чем на других таблицах.

4. Ну и в свое время это было загадочно не только для меня http://www.sqltact.com/2010/08/cdc-dbofnallchanges-frustrating.html
26 июл 15, 15:45    [17935533]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить