Я потратил немного времени, но нашел ответ!
Сначала мне нужно было создать несколько шагов, прежде чем я смог переключиться на указанный шаг работы c на основе кода ошибки.
Список шагов задания
шаг 1: проверьте, является ли переключатель действительным, например, активна только одна таблица, а DateTimeStamp пассивной таблицы (которая должна быть последней обновленной) является более поздней. затем активная таблица
Declare @NumberOfTables as int
,@ActiveTable as nvarchar(100)
,@Update_DateTime_Active as datetime
,@Update_DateTime_Passive as datetime;
Set @NumberOfTables = (Select Count(*) from [Table_Status] where Upper([Status]) = 'ACTIVE' ) ;
if @NumberOfTables = 1
BEGIN
set @Update_DateTime_Active = (Select [UPDATED] from [Table_Status] where Upper([Status]) = 'ACTIVE' );
set @Update_DateTime_Passive = (Select [UPDATED] from [Table_Status] where Upper([Status]) <> 'ACTIVE' );
END
IF @Update_DateTime_Active > @Update_DateTime_Passive
RAISERROR ('Status Active table not compatible with Update DateTimestamp',16,2)
if @NumberOfTables <> 1
RAISERROR ('Tables Data_ODD and Data_EVEN have same status',16,3)
Шаг 2: определить, какая таблица в данный момент активна
Declare @NumberOfTables as int
,@ActiveTable as nvarchar(100);
Set @NumberOfTables = (Select Count(*) from [Table_Status] where Upper([Status]) = 'ACTIVE' ) ;
if @NumberOfTables = 1
BEGIN
Set @ActiveTable = (Select UPPER([TABLE_NAME]) from [Data_Table_Status] where Upper([Status]) = 'ACTIVE' );
END
if @ActiveTable = 'DATA_EVEN'
BEGIN
RAISERROR('Now switch VIEW to table ...ODD',1,1)
END
Этот шаг определяет следующий шаг, который необходимо выполнить в дополнительных настройках шага:
Действие успешно: перейдите к шагу 3
Действие ошибки: перейдите к шагу 5
Помните: когда активен ..EVEN, возникает ошибка, приводящая к заданию от go до шага 5 (который активируется .. ODD)
Шаг 3: изменить представление на EVEN
ALTER View [dbo].[V_Data_] AS SELECT * FROM [dbo].[Data_EVEN]
Шаг 4: обновить таблицу состояния (изменить состояние ODD на Active и EVEN на Passive)
UPDATE [Data_Table_Status]
Set [STATUS] = 'ACTIVE'
Where [TABLE_NAME] = 'Data_EVEN'
UPDATE [Data_Table_Status]
Set [STATUS] = 'PASSIVE'
Where [TABLE_NAME] = 'Data_ODD'
Шаг 5: изменить представление на ODD
Шаг 6: обновленная таблица состояния (изменить статус ODD на Активный и ДАЖЕ на Пассивный)