使用弹性比例移动shardlet并强制复制引用表的顺序

时间:2015-02-02 16:04:29

标签: azure azure-sql-database azure-elastic-scale

我想将一个碎片从一个碎片移动到另一个碎片。我使用Azure Elastic Sc​​ale库和提供的Split / Merge / Move示例。

尝试移动shardlet时,我一直收到错误,因为该工具正在将(引用)表复制到不同的分片,但顺序错误。该工具正在尝试复制Firmware表,该表与User表具有FK关系。但是,此User表尚未复制,因此当它尝试执行INSERT命令时,它会失败,因为不满足FK关系。

该网站上的文档说明如下:

  

参照完整性:Split / Merge服务分析依赖关系   在表之间并使用外键 - 主键关系进行分级   移动参考表和shardlet的操作。一般来说,   首先按依赖顺序复制引用表,然后复制主题   按照每个批次中的依赖项顺序进行复制。这是   必要的,以便将目标碎片上的FK-PK约束视为   新数据到了。

有没有办法在处理表格时管理订单?

也许通过更改他们的注册顺序?

1 个答案:

答案 0 :(得分:1)

您是否可以仔细检查两个表(固件和用户)是否在分片映射中的SchemaInfoCollection中注册为引用表?拼写,大写与小写......

Split / Merge使用SchemaInfoCollection中的信息来获取引用表的列表,然后分析它们的依赖项。因此,除非我们有错误,否则应该注意这种情况。

如果您在分片地图中有正确的信息,这将是我们想要查看的错误。如果情况确实如此,请告诉我。你可以通过torsteng(at)microsoftDOTcom与我联系。

谢谢, 托