ALTER FEDERATION SWITCH 操作失败。指定的边界值不存在
ALTER FEDERATION SWITCH operation failed. Specified boundary value does not exist
我们有一个 Windows Azure Federated 数据库,我们需要将其转换为普通数据库(由于 Federations 即将停用)。
阅读了大量文档并尝试了各种方法后,答案似乎是 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)
LOW 或 HIGH 确定将在给定联盟 boundary_value 的相应方切换出的联盟成员。边界值必须对应于现有联邦中的现有分区值,range-high 或 range-low。
并且有一个具体的例子来切换出边界为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
但是,无论我尝试为 boundary_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 来 SWITCH OUT 99
我试过使用 0,因为这是我用来连接到联邦的值,但是对于 LOW 和 HIGH,它给出了与 -1 和 1 相同的错误。
我还尝试在 运行 命令之前指定使用联合根:-
USE FEDERATION ROOT WITH RESET
GO
ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = -9223372036854775808)
我已经从主数据库和联邦中尝试 运行 它。
有没有人成功使用过 ALTER FEDERATION ... SWITCH OUT AT 命令,请指点我正确的方向?
再四处寻找后,我找到了 link 联邦迁移实用程序:
https://code.msdn.microsoft.com/vstudio/Federations-Migration-ce61e9c1
查看代码,似乎正确的命令是我已经尝试过的命令:
ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = -9223372036854775808)
这次成功了。不知道为什么第一次没有,可能是我在它扔掉之前尝试过的其他东西。
我们有一个 Windows Azure Federated 数据库,我们需要将其转换为普通数据库(由于 Federations 即将停用)。
阅读了大量文档并尝试了各种方法后,答案似乎是 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)
LOW 或 HIGH 确定将在给定联盟 boundary_value 的相应方切换出的联盟成员。边界值必须对应于现有联邦中的现有分区值,range-high 或 range-low。
并且有一个具体的例子来切换出边界为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
但是,无论我尝试为 boundary_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 来 SWITCH OUT 99
我试过使用 0,因为这是我用来连接到联邦的值,但是对于 LOW 和 HIGH,它给出了与 -1 和 1 相同的错误。
我还尝试在 运行 命令之前指定使用联合根:-
USE FEDERATION ROOT WITH RESET
GO
ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = -9223372036854775808)
我已经从主数据库和联邦中尝试 运行 它。
有没有人成功使用过 ALTER FEDERATION ... SWITCH OUT AT 命令,请指点我正确的方向?
再四处寻找后,我找到了 link 联邦迁移实用程序:
https://code.msdn.microsoft.com/vstudio/Federations-Migration-ce61e9c1
查看代码,似乎正确的命令是我已经尝试过的命令:
ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = -9223372036854775808)
这次成功了。不知道为什么第一次没有,可能是我在它扔掉之前尝试过的其他东西。