Операция 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)
На этот раз это сработало. Не уверен, почему это не произошло в первый раз, возможно, что-то еще, что я попробовал прежде, чем это выбросило.