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)

这次成功了。不知道为什么第一次没有,可能是我在它扔掉之前尝试过的其他东西。