我想将一个碎片从一个碎片移动到另一个碎片。我使用Azure Elastic Scale库和提供的Split / Merge / Move示例。
尝试移动shardlet时,我一直收到错误,因为该工具正在将(引用)表复制到不同的分片,但顺序错误。该工具正在尝试复制Firmware
表,该表与User
表具有FK关系。但是,此User
表尚未复制,因此当它尝试执行INSERT
命令时,它会失败,因为不满足FK关系。
该网站上的文档说明如下:
参照完整性:Split / Merge服务分析依赖关系 在表之间并使用外键 - 主键关系进行分级 移动参考表和shardlet的操作。一般来说, 首先按依赖顺序复制引用表,然后复制主题 按照每个批次中的依赖项顺序进行复制。这是 必要的,以便将目标碎片上的FK-PK约束视为 新数据到了。
有没有办法在处理表格时管理订单?
也许通过更改他们的注册顺序?
答案 0 :(得分:1)
您是否可以仔细检查两个表(固件和用户)是否在分片映射中的SchemaInfoCollection中注册为引用表?拼写,大写与小写......
Split / Merge使用SchemaInfoCollection中的信息来获取引用表的列表,然后分析它们的依赖项。因此,除非我们有错误,否则应该注意这种情况。
如果您在分片地图中有正确的信息,这将是我们想要查看的错误。如果情况确实如此,请告诉我。你可以通过torsteng(at)microsoftDOTcom与我联系。
谢谢, 托