Я новичок в SQL Server. Для проекта мне нужно, чтобы CDC был включен. Копирую данные cdc в другую (архивную) базу и после этого таблицы CDC можно сразу чистить. Таким образом, время хранения не должно быть высоким, я просто поставил его на 1 минуту, и когда задание очистки запускается (после того, как время хранения уже выполнено), кажется, что оно удалило только несколько записей (самые старые). Почему не удалил все? Иногда вообще ничего не удаляет. После запуска задания несколько раз другие записи удаляются. Я нахожу это странным, потому что время хранения давно прошло.
Я установил время удержания на 1 минуту (на самом деле я хотел 0, но это было невозможно) и не изменил порог (= 5000). Я отключил расписание, так как хочу, чтобы задание очистки запускалось сразу после того, как записи CDC будут скопированы в мою архивную базу данных, а не в определенное время.
Моя логика для этой идеи заключалась в том, что, например, днем будут обновления. Задача по копированию записей CDC в архивную базу данных должна запускаться в 2:00, после этого задачи вызывается задание очистки. Таким образом, из-за минимального времени хранения все записи CDC должны быть удалены заданием очистки. Время удержания все-таки прошло?
Я просто попытался посмотреть, что произойдет, когда я снова настрою расписание в задании, например, как CDC должен использоваться в целом. По прошествии времени я проверил таблицу CDC и обнаружил, что она также удаляет только самую старую запись. Так что я делаю неправильно?
Я сделал обходной путь, создав новое задание с задачей удалить все записи в таблицах CDC (и отключив все задание очистки CDC по умолчанию). Это работает лучше, так как удаляет все, но меня это беспокоит, потому что я хочу работать с исходным заданием очистки, и я думаю, что оно должно работать так, как я хочу.
Спасибо,
Ким