MSSQL-复制和违反PK约束

问题描述:

我已经设置了事务复制,并允许由于带宽限制(因此没有生成快照)而从备份进行初始化。现在,当在数据库中插入数据的应用程序启动时(即运行很短的时间,然后停止并返回错误),我们在出版物数据库上发生此错误。复制监视器不显示任何错误,所以它不是发布和订阅数据库之间的不一致。也不关心自动生成的ID(即使用标识列),因为此表依赖于datestamp作为PK。错误是:MSSQL-复制和违反PK约束

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

复制设置是否可以对源/发布数据库执行某些操作,从而导致此问题?这可能是由于订户数据库的高延迟造成的?由于我在复制监视器中看不到错误,因此我甚至不确定在继续执行复制设置时发生此错误。

如何解决此问题?

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以获取更多详细信息。如果您这样做,请记住停止并启动分销代理以查看更改。这可以在没有丢失复制数据的风险下完成。