Azure SQL 数据库同步列不允许空值警告



我设置了一个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) 再次创建同步组

问候加里

我有一个比批准的更好的解决方案(不那么激烈)。

使用此方法,无需删除整个同步组。

批准的解决方案之所以有效,是因为您正在刷新整个副本,但是如果您已经存在大量信息怎么办?重做所有内容可能需要很长时间。

仅修复一个表的解决方案是:

  1. 确保在执行这些步骤时复制副本已关闭

  2. 在此处使用@denise提供的脚本链接请记住,要小心,该脚本适用于 LIKE 语句,因此请确保您只获得 sigle 结果。

  3. 删除该结果中提供的所有对象。如果现在运行副本,它将失败,说找不到该过程,所以不要这样做!

  4. 打开"表",刷新架构,然后取消选择您遇到问题的表,按保存。

  5. 再次打开"表",刷新架构以防万一,然后选择您有问题的表,按保存。

  6. 现在您可以安全地启动副本,它将为失败的表重新创建缺少的对象。

相关内容

  • 没有找到相关文章