【问题标题】:SQL violation of primary key constraint replicationSQL违反主键约束复制
【发布时间】:2015-09-01 14:25:23
【问题描述】:

我正在尝试在 sql server 2008 到 2012 之间进行复制 我之前在 2008 年服务器之间完成了此操作,并且运行良好

现在,当我将发布类型设置为快照,并将其作为从分发者到订阅者的推送时,我遇到了错误

违反主键约束“PK__tableF__4EBD61D204E4BC85”。无法在对象“dbo.table”中插入重复键。重复键值为 (0)。 (来源:MSSQLServer,Numéro d'erreur:2627) Obtenir de l'aide:http://help/2627

即使我只选择了一个表来复制我总是遇到同样的问题,数据库的模式被创建但表中没有数据 我试着把桌子弄脏了,但它不起作用。 请问我能做什么? 谢谢

【问题讨论】:

  • 你能把出版物和文章写成脚本,然后粘贴到这里吗?想看看你设置了哪些选项。
  • 抱歉,我不明白如何编写出版物?

标签: sql-server-2008 sql-server-2012 database-replication


【解决方案1】:

我总是遇到这个问题 我尝试编写脚本而不是使用 wisard

    DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @frequency_type as int;
DECLARE @subscriber_security_mode as int;
DECLARE @subscriber_login AS sysname;
DECLARE @subscriber_password AS sysname;

SET @publication = N'8-9' ;
SET @subscriber =N'APPLI-SERV-EXT';
SET @subscriptionDB = N'89' ; 
SET @subscriber_security_mode= 1; 
SET @subscriber_login=N'xxx'; 
SET @subscriber_password=N'xxxx'; 

--Add a push subscription to a transactional publication.
USE [DBName]

EXEC sp_addsubscription 
@publication = @publication, 
@subscriber = @subscriber, 
@destination_db = @subscriptionDB, 
@subscription_type = N'push';

EXEC sp_addpushsubscription_agent 
@publication = @publication, 
@subscriber = @subscriber, 
@subscriber_db = @subscriptionDB, 
@subscriber_security_mode=@subscriber_security_mode,
@subscriber_login=@subscriber_login,
@subscriber_password=@subscriber_password,
@frequency_type = @frequency_type,
@job_login = N'xxxx', 
@job_password = N'xxx';
GO

当我执行时,我收到一条警告“警告:分发代理的工作是隐式创建的,将在 SQL Server 代理的服务帐户下运行。”

如果我检查订阅者,我发现架构被复制,而是在表中有 418 行,我有 4012 并且表是空的,除了一个为 0 的非空属性 这是表格的脚本

    USE [test]
GO

    /****** Object:  Table [dbo].[clientEssai]    Script Date: 15/09/2015 15:13:44 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[clientEssai](
        [client_id] [int] NOT NULL,
        [client_name] [varchar](255) NULL,
        [contact_name] [varchar](255) NULL,
        [tel] [varchar](255) NULL,
        [gsm] [varchar](255) NULL,
        [email] [varchar](255) NULL,
        [adress] [varchar](255) NULL,
        [registration_date] [date] NULL
    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

P.S:我只选择了一篇要复制的文章,即表 ClientEssai Publisher 和 Distributor 是 2008 实例 订户 2012 我正在推动 我为代理使用相同的帐户 是否有特定的配置要做? 谢谢

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 2016-08-24
    • 1970-01-01
    • 2022-01-06
    • 2012-07-15
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多