我设置了一个Microsoft SQL 数据同步代理作业,以将我们的本地服务器同步到 Azure。它运行良好,然后我们在本地进行了一些更新,它没有从 Azure 中删除已删除的行,现在同步失败并显示警告:
Sync completed with warnings in 708.02 seconds.
Upload: 4646 changes applied/155 failed
Download: 680 changes applied/0 failedData Sync will stop synchronizing changes for this sync group member in -60 days if the failures are not resolved.
Upload - errors for first 5 rows that failed to apply:Error #1: SqlException Error Code: -2146232060 -
SqlError Number:515, Message: Cannot insert the value NULL into column 'ModelID', table 'dbo.ModelYears'; column does not allow nulls. INSERT fails.
SqlError Number:3621, Message: The statement has been terminated. Error #2: SqlException Error Code: -2146232060 -
SqlError Number:515, Message: Cannot insert the value NULL into column 'ModelID', table 'dbo.ModelYears'; column does not allow nulls. INSERT fails.
SqlError Number:3621, Message: The statement has been terminated. Error #3: SqlException Error Code: -2146232060 -
SqlError Number:515, Message: Cannot insert the value NULL into column 'ModelID', table 'dbo.ModelYears'; column does not allow nulls. INSERT fails.
SqlError Number:3621, Message: The statement has been terminated. Error #4: SqlException Error Code: -2146232060 -
SqlError Number:515, Message: Cannot insert the value NULL into column 'ModelID', table 'dbo.ModelYears'; column does not allow nulls. INSERT fails.
SqlError Number:3621, Message: The statement has been terminated. Error #5: SqlException Error Code: -2146232060 -
SqlError Number:515, Message: Cannot insert the value NULL into column 'ModelID', table 'dbo.ModelYears'; column does not allow nulls. INSERT fails.
SqlError Number:3621, Message: The statement has been terminated.
For more information, provide tracing ID ‘92002a08-b374-4579-b58c-a5164e820767’ to customer support.
ModelID 列不允许在任一表上出现空值,因此我不确定导致错误的原因。
我按照一个论坛的建议截断了 Azure 上的 ModelYears_dss_tracking 和 ModelYears,它确实重新填充了表,但它仍然抛出警告。
您能否确认您是否更改了此表的PK?
消除错误的快速方法是1) 删除同步组2) 删除集线器和成员上架构"数据同步"下的所有表和 SP3) 删除包含"DSS"一词的触发器4) 再次创建同步组
问候加里
我有一个比批准的更好的解决方案(不那么激烈)。
使用此方法,无需删除整个同步组。
批准的解决方案之所以有效,是因为您正在刷新整个副本,但是如果您已经存在大量信息怎么办?重做所有内容可能需要很长时间。
仅修复一个表的解决方案是:
-
确保在执行这些步骤时复制副本已关闭
-
在此处使用@denise提供的脚本链接请记住,要小心,该脚本适用于 LIKE 语句,因此请确保您只获得 sigle 结果。
-
删除该结果中提供的所有对象。如果现在运行副本,它将失败,说找不到该过程,所以不要这样做!
-
打开"表",刷新架构,然后取消选择您遇到问题的表,按保存。
-
再次打开"表",刷新架构以防万一,然后选择您有问题的表,按保存。
-
现在您可以安全地启动副本,它将为失败的表重新创建缺少的对象。