MSSQL - 复制和违反PK约束

问题描述 投票:2回答:1

我已经设置了事务复制,并且由于带宽限制而允许从备份初始化(因此不会生成快照)。现在,当在数据库中插入数据的应用程序启动时,我们会在Publication数据库上出现此错误(好吧,它会运行很短的时间,然后会因错误而停止)。复制监视器不显示任何错误,因此发布和订阅数据库之间不一致。也不关心自动生成的ID(即使用Identity列),因为该表依赖于日期戳作为PK。错误是:

System.Data.SqlClient.SqlException:违反PRIMARY KEY约束''。无法在对象'dbo'中插入重复键。该语句已终止。

复制设置是否可以对源/发布数据库执行某些操作?这可能是由订户数据库的高延迟引起的吗?由于我没有在复制监视器中看到错误,我甚至不确定在继续复制设置时发生了这个错误。

我该如何解决这个问题?

sql-server constraints primary-key replication
1个回答
0
投票

1.确保使用PK中的复制设置创建要复制的表/文章

之前:

CREATE TABLE [dbo].[mytable](
    [mytableID] [BIGINT] IDENTITY(1,1)  NOT NULL,

后:

CREATE TABLE [dbo].[mytable](
    [mytableID] [BIGINT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,

你也必须为外键做同样的事情

2.复制监视器应显示错误消息

  • 选择出版物。
  • 在右侧窗口中选择订阅,将弹出订阅窗口。
  • 选择分发服务器到订阅者历史记录(可能不适用于订阅服务器类型,然后您需要转到订阅服务器)。
  • 此选项卡将显示分发代理程序事务。您可以将代理配置文件参数“HistoryVerboseLevel”更改为2以获取更多详细信息。如果这样做,请记住停止并启动分发代理以查看更改。这可以在没有丢失复制数据的风险的情况下完成。
© www.soinside.com 2019 - 2024. All rights reserved.