【问题标题】:Azure SQL Sync Group to on-premise errorAzure SQL 同步组到本地错误
【发布时间】:2017-12-01 08:22:28
【问题描述】:

同步组目前处于预览阶段,我已经为 Azure sql 数据库设置了一个同步组,以单向同步到本地 sql 2014 实例。

设置过程进展顺利,包括在我们的服务器上安装本地同步代理。没有错误。

问题在于选择要同步的表。选择所有这些都立即失败,因为当我单击同步时,我收到了错误:

所以,我只选择了一张表,什么时候成功。我一一重复,确保取消选择 xml 列,因为不支持这些列,直到最后一个结果表失败。

知道为什么这个表会导致错误吗?

更新

我已将问题定位到 Results PlayerId。当我取消选择此字段时,开始同步时不会显示错误(但这不起作用,因为它是一个不能为空的 FK)。主键和外键的数据类型相同。

【问题讨论】:

  • 表上是否有无效的关系或索引?根据您在屏幕截图中的内容,数据类型应该不是问题。将表格生成为(创建)脚本,包括所有信息,看看它给了你什么。
  • PlayerId 和 Player 的表之间是否建立了关系?关系中涉及的字段是否具有相同的数据类型?该表的 PlayerId 是否同时存在于中心数据库和成员数据库上?架构差异/更改必须手动传播。当您将字段添加到表中时,您还应该手动将其添加到成员数据库中。
  • 所有关系中的数据类型都相同,并且在从同一备份创建中心数据库和子数据库时仍然存在相同的错误,因此它们完全镜像。我不确定什么会被视为“无效的关系或索引”

标签: azure synchronization azure-sql-database


【解决方案1】:

一位 Microsoft 工程师检查了我们这边的跟踪,发现问题是在您尝试触发同步时发生的。实际出现的错误信息是:

[dbo].[StrokeplayRoundResults] 和 [dbo].[Results] 之间存在循环依赖关系。

目前,SQL 数据同步不支持循环依赖。此行为是设计使然。这背后的原因是 SQL Data Sync 试图找到正确的顺序来插入不违反外键约束的数据。如果存在循环依赖,则不存在这样的顺序。

Microsoft 将很快显示更明确的错误消息,而不是“处理请求时发生意外错误”。

希望这会有所帮助。感谢您的耐心等待。

【讨论】:

  • 谢谢阿尔贝托,你是明星!结果证明这是一个循环引用,比报告的 StrokeplayRoundResults
  • 我希望您可以删除其中一个,最后配置并开始使用 SQL 数据同步。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多