Ручная очистка CHANGE TRACKING в SQL Server

Я пытаюсь вручную очистить таблицы отслеживания изменений в SQL Server 2017.

я запускаю команду

exec sp_flush_CT_internal_table_on_demand 'mydb.data.foobar'

Сообщение об ошибке:

Сообщение 2501, уровень 16, состояние 1, процедура sys.sp_MSflush_CT_internal_table_on_demand, строка 22 [строка запуска пакета 40]
Не удается найти таблицу или объект с именем "mydb.data.foobar". Проверьте системный каталог.

Таблица mydb.data.foobar существует.

Следующее успешно возвращается:

select object_id('mydb.data.foobar')

Кто-нибудь чистил ТТ вручную?


person brewsky    schedule 28.11.2018    source источник
comment
Довольно разреженный документ указывает, что параметр является именем таблицы. Я предполагаю, что это означает, что вам нужно указать имя таблицы в текущей базе данных.   -  person SMor    schedule 28.11.2018


Ответы (2)


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

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

EXEC sp_flush_commit_table_on_demand 100000

Используйте что-то вроде этого:

EXEC sys.sp_flush_CT_internal_table_on_demand 'Table_Name'

Это работает для меня. Я думаю, вы пропустили sys.

Установка auto_cleanup = false в основном означает, что очистка отключена, это позволяет вам устранять любые неполадки, если у вас есть проблемы с синхронизацией, которые требуют отладки/исследования.

Если это не помогло, проверьте это: Изменение процесса очистки отслеживания в SQL Server 2016 и 2017

person CR241    schedule 28.11.2018

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

Всем, кто использует отслеживание изменений в сочетании с параметром Журналирование, отличным от Простой, обратитесь к статье KB4500403 и убедитесь, что вы установили последнее накопительное обновление.

В этой статье рассматриваются большие журналы транзакций, но также рассматриваются проблемы с неработающей очисткой отслеживания изменений в целом. Пока я не установил это накопительное обновление, я не только не мог запустить очистку с отслеживанием изменений, но мне также пришлось отключить автоматическую очистку, потому что она удерживала ядро ​​​​ЦП на 100% в течение всего дня и создавала файлы журналов объемом более 50 ГБ для высокоактивных баз данных.

Вот ссылка на проблему: https://support.microsoft.com/en-us/topic/kb4500403-fix-tlog-grows-quickly-when-you-run-auto-cleanup-procedure-in-sql-server-2014-2016-and-2017-41a5a303-b0b3-e9d8-a540-597ad27b584b

person Brain2000    schedule 07.07.2021