
-- Loop to invoke manual cleanup procedure for cleaning up change tracking tables in a database

-- Fetch the tables enabled for Change Tracking
select identity(int, 1,1) as TableID, object_name(object_id) as TableName
into #CT_Tables
from sys.change_tracking_tables 
-- Set up the variables
declare @start int = 1, @end int = (select count(*) from #CT_Tables), @tablename varchar(255)
while (@start <= @end)
begin	
	-- Fetch the table to be cleaned up
	select @tablename = TableName from #CT_Tables where TableID = @start
	-- Execute the manual cleanup stored procedure
	exec sp_flush_CT_internal_table_on_demand @tablename 
	-- Increment the counter
	set @start = @start + 1
end
drop table #CT_Tables
