Операция ALTER FEDERATION SWITCH не выполнена. Указанное граничное значение не существует

У нас есть федеративная база данных Windows Azure, которую нам нужно превратить в обычную базу данных (поскольку федерации скоро будут удалены).

Прочитав обильное количество документации и испробовав разные вещи, вы получите ответ ALTER FEDERATION ... SWITCH OUT AT:-

https://msdn.microsoft.com/library/dn269988.aspx

Удаляет все метаданные и ограничения федерации из базы данных участников федерации. После выполнения член федерации является автономной базой данных.

Формат команды задается следующим образом:

ALTER FEDERATION federation_name SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)

НИЗКИЙ или ВЫСОКИЙ определяет члена федерации, который будет переключен на соответствующей стороне данного федерации border_value. Граничное значение должно соответствовать существующему значению раздела, высокому диапазону или низкому диапазону, в существующей федерации.

и есть конкретный пример для отключения федерации с границей 99:

ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = 100)

Итак, взяв всю вышеуказанную информацию, я запросил значения федерации, которые вернули следующее:

SELECT * FROM sys.federations  
federation_id : 65536  
name : CustomerFederation  

SELECT * FROM sys.federation_members  
federation_id : 65536  
member_id : 65536  

SELECT * FROM sys.federation_distributions  
federation_id : 65536  
distribution_name : cid  
distribution_type : RANGE  
system_type_id : 127  
max_length : 8  
precision : 19  
scale : 0  
collation_name : NULL  
user_type_id : 127  
boundary_value_in_high : 1  

SELECT * FROM sys.federation_member_distributions  
federation_id : 65536  
member_id : 65536  
distribution_name : cid  
range_low : -9223372036854775808  
range_high : NULL  

Однако, независимо от того, какое значение я пытаюсь использовать для border_value, я получаю следующее:

Msg 45026, Level 16, State 1, Line 1  
ALTER FEDERATION SWITCH operation failed. Specified boundary value does not exist for federation distribution cid and federation CustomerFederation.

Я попытался использовать значение range_low:-

ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = -9223372036854775808)  
ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = -9223372036854775808)  

Я также попробовал одну из сторон этого значения, так как в примере использовалось 100 для ВЫКЛЮЧЕНИЯ 99

Я попытался использовать 0, так как это значение я использую для подключения к федерации, но это дает ту же ошибку, что и -1 и 1, для LOW и HIGH.

Я также попытался указать использование федеративного корня перед запуском команды:-

USE FEDERATION ROOT WITH RESET  
GO

ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = -9223372036854775808)

Я попытался запустить его из основной базы данных и из Федерации.

Кто-нибудь успешно использовал команду ALTER FEDERATION ... SWITCH OUT AT и может указать мне правильное направление, пожалуйста?

1 ответ

Решение

Поискав еще немного, я нашел ссылку на утилиту федерации по миграции:

https://code.msdn.microsoft.com/vstudio/Federations-Migration-ce61e9c1

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

ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = -9223372036854775808)

На этот раз это сработало. Не уверен, почему это не произошло в первый раз, возможно, что-то еще, что я попробовал прежде, чем это выбросило.

Другие вопросы по тегам