ALTER FEDERATION SWITCH操作失败.指定的边界值不存在



我们有一个Windows Azure联邦数据库,我们需要把它变成一个正常的数据库(由于联邦很快就会退役)。

在阅读了大量的文档并尝试了各种方法后,答案似乎是ALTER FEDERATION…切换出命令:-

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

从联邦成员数据库中删除所有联邦元数据和约束。执行后,federation成员是一个独立的数据库。

命令的格式如下:-

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

LOW或HIGH决定将在给定联邦边界值的各自一侧切换出的联邦成员。边界值必须与联邦中已存在的分区值range-high或range-low相对应。

,有一个特定的例子来切换联邦的边界为99:-

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

因此,获取上述所有信息后,我查询Federation值,它返回以下内容:-

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  

然而,无论我尝试使用什么值的边界值,我得到以下:-

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,因为这是我用来连接到联邦的值,但这会给出相同的错误,就像-1和1一样,对于LOW和HIGH。

我还尝试在运行命令之前指定使用联邦根:-

USE FEDERATION ROOT WITH RESET  
GO
ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = -9223372036854775808)

我试过从主数据库和联邦数据库运行它。

是否有人成功使用ALTER FEDERATION…换掉指挥,能给我指个正确的方向吗?

在寻找了更多之后,我发现了一个联邦迁移实用程序的链接:

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

查看代码,正确的命令似乎是我已经尝试过的命令:

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

这次成功了。不知道为什么第一次没有,可能是我在它把它扔出去之前尝试了别的东西。

相关内容

  • 没有找到相关文章

最新更新