《Replication的犄角旮旯》系列导读

Replication的犄角旮旯(一)--变更订阅端表名的应用场景

Replication的犄角旮旯(二)--寻找订阅端丢失的记录

Replication的犄角旮旯(三)--聊聊@bitmap

Replication的犄角旮旯(四)--关于事务复制的监控

Replication的犄角旮旯(五)--关于复制identity列

Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)

Replication的犄角旮旯(八)-- 订阅与发布异构的问题

Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,赋予订阅活力的工具

---------------------------------------华丽丽的分割线--------------------------------------------

 

今天被群友问到复制环境中identity属性的问题。在此通过几个测试说明一下identity列是如何在复制环境中实现的;

以下测试均是基于SQLSERVER 2012 SP1下的事务复制环境;

先抛出几个测试目的;

1、identity列和not for replication的关系,发布端及订阅端何时添加not for replication属性

2、快照初始化、备份初始化、不初始化订阅对not for replication参数的依赖

3、如何添加not for replication,在哪添加not for relication,以及替代not for replication的方法

 

先解释一下not for replication

NOT FOR REPLICATION

如果为约束指定了此子句,则当复制代理执行插入、更新或删除操作时,将不会强制执行此约束。

http://msdn.microsoft.com/zh-cn/library/ms174979.aspx

简单说,对于identity、外键约束、check约束,可以通过指定not forreplication避免订阅端写入数据失败;

 

测试开始:

  先在同一个实例下创建两个库test_byxl_1、test_byxl_2,分别作为本次测试的发布库和订阅库;

  Replication的犄角旮旯(五)--关于复制identity列

  test_byxl_1下创建tb_ident_1表,结构如下

1 create table test_byxl_1.dbo.tb_ident_1 (id int primary key identity ,name varchar(10))
View Code

相关文章: