Очистка отслеживания изменений в SQL Server вручную - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь вручную очистить таблицы отслеживания изменений в 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')

Кто-нибудь когда-либо чистил CT вручную?

1 Ответ

0 голосов
/ 29 ноября 2018

Существует системная хранимая процедура , доступная 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...