【问题标题】:ALTER FEDERATION SWITCH operation failed. Specified boundary value does not existALTER FEDERATION SWITCH 操作失败。指定的边界值不存在
【发布时间】:2015-09-26 04:53:34
【问题描述】:

我们有一个 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)

LOW 或 HIGH 确定将在给定联合边界值的相应侧切换出的联合成员。边界值必须对应于现有联合中的现有分区值 range-high 或 range-low。

还有一个具体的例子可以切换出边界为99的Federation:-

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  

但是,无论我尝试为边界值使用什么值,我都会得到以下结果:-

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 命令,请指出正确的方向?

【问题讨论】:

    标签: sql azure azure-sql-database federation sql-azure-federations


    【解决方案1】:

    在四处寻找之后,我找到了一个联邦迁移实用程序的链接:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2017-10-01
      • 2017-09-17
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多