sql - SQL 复制错误:“在订阅者处未找到该行”但指向另一个发布的表
问题描述
我在复制监视器中收到以下错误:
对主键 = 的表 '[dgv].[POSCustomer]' 应用复制的 UPDATE 命令时,在订阅服务器上找不到该行
该错误实际上与缺少的行无关,而是表的架构说dgv
.
产生错误的发布应该只复制到[ppv].[POSCustomer]
,甚至不应该知道[dgv].[POSCustomer]
。只有在交付初始快照后创建的行才会受到影响。
的背景:
PPV
我正在为 3 个本地数据库、DGV
和PAC
单个 Azure SQL 数据库设置事务复制。
这三个数据库属于不同的法律实体,位于两个不同的服务器(PPV
一个上DGV
,PAC
另一个上),并且具有相同的架构。
每个具有相同名称的表dbs
都设置为要复制。
为了在目标数据库中区分它们,我使用它们的源数据库名称将它们放入三个不同的模式中,即ppv.POSCustomer
, dgv.POSCustomer
, pac.POSCustomer
。
这是通过更改Publication properties -> Articles -> Article properties -> Destination
对象所有者中的设置来完成的。
初始快照交付没有问题;但是,一段时间后,row was not found
复制监视器中开始出现。
我尝试重新初始化订阅几次,但在交付快照后错误不断出现。
快照交付后创建的所有行都会受到影响。
数据库彼此完全隔离,没有跨数据库查询,没有存储过程,没有触发器说记录PPV.dbo.POSCustomer
应该在 中更新DGV.dbo.POSCustomer
,所以我不知道为什么会发生这个错误。
我曾经sp_browsereplcmd
跟踪生成错误的命令,这导致我:
{CALL [sp_MSupd_dboPOSCustomer] (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2019-05-14 00:00 :00.000,,27280000.0000,10,,,,,,,,,,,,2019-05-14 18:30:04.000,,,,,,,,,,,,,,,,,,,,N 'vinhn4-00001395',0x00000000d000080000)}
我不明白,这sp
不是我们POS
应用程序的一部分。
我怎样才能让这个错误消失?手动插入缺失的行将不起作用,因为所有新行都会受到影响。打开 -skiperrors 不是一个选项。复制到不同的目标数据库之前已经成功完成,但是使用 Azure SQL 设置跨数据库查询是如此痛苦,我宁愿避免 \ 如果可能的话。
解决方案
推荐阅读
- vue.js - Vue JS在加载时自动调整文本区域
- gurobi - 当我找到多个解决方案时,为什么我在 gurobi 中得到相同的答案?
- node.js - 我遇到问题会通过 npm install webpack 安装 webpack 吗?
- python - CNN模型不学习
- javascript - Next.js: 匹配根 '/' 和动态路由 '/param' 的一页
- simulation - Anylogic,动态改变资源的容量
- abp - 标准模块中的本地化
- c# - Unity - 引用另一个游戏对象文本
- spring-boot - 在同一个项目中集成 eureka 和 SBA
- flutter - 导航到不同屏幕时如何使用 PageTransitionsBuilder?