четверг, 27 февраля 2020 г.

Обработка результатов выборки select в цикле: Отключение отслеживания изменения всех таблиц БД

/*
Данные скрипт отключает отслеживание изменения всех таблиц для БД DBName
Выборка, значения которой будут обрабатываться
              SELECT OBJECT_NAME([object_id]) 
              FROM [DBName].[sys].[change_tracking_tables]
Переменная цикла 
@id
Вместо DBName надо вписать свое наименование базы данных
*/

declare @id_cursor cursor
declare @id varchar(64) /*Переменная для хранения обрабатываемого значения выборки*/
declare @sql varchar(256);

set @id_cursor =  cursor local dynamic for
              SELECT OBJECT_NAME([object_id]) 
              FROM [DBName].[sys].[change_tracking_tables]

open   @id_cursor
fetch next from @id_cursor into @id
if (@@fetch_status = 0)
   while (@@fetch_status = 0)
   begin
         set @sql='alter table ['+ @id + '] Disable CHANGE_TRACKING;'
         exec (@sql) 
        fetch next from @id_cursor into @id
   end
close      @id_cursor
deallocate @id_cursor