有关发布复制的几个补充问题

 

 

() 在发布服务器中增加或减少表 (注意: 不能有订阅)

企业管理器->工具-> 复制->创建和管理发布->选择发布的数据库->属性和订阅->项目中可以添加表

 

T-SQL语句可以用下面两个过程:

sp_addarticle, sp_droparticle

 

() 增加或删除一列

企业管理器->工具-> 复制->创建和管理发布->选择发布的数据库->属性和订阅->筛选列

 

T-SQL语句可以用下面两个过程:

sp_repladdcolumn, sp_repldropcolumn

 

() 改变列的数据类型 int->varchar

这个需要重建发布,可以在企业管理器中用向导重新配置,也可用下面的方法:

 

1 生成删除和创建发布与订阅的脚本

2 修改创建订阅的存储过程 sp_addsubscription @sync_type=none

注解: @sync_type是订阅同步类型. 可以是 automatic none. 默认设置为 automatic.

如果是 automatic,则表示首先将已发布表的架构和初始数据传输到订阅服务器.

如果是 none,则假定订阅服务器已有已发布表的架构和初始数据.始终传输系统表和数据

3 语句改变列的数据类型

4 停止各种活动后运行脚本重建发布

 

() 以下改变,需要重新运行快照及重新初始化订阅

筛选

订阅服务器上表的拥有者/名称

调用格式

快照选择项

 

 

如何复制标识列

 

() 把标识列的属性改为: 标识 (不用于复制)

() 在发布方和订阅方设置标识的范围

1 队列更新支持自动标识范围

2 双向事务复制要求手动设置标识的范围

  (1)DBCC CHECKIDENT RESEED在发布方和订阅方设置标识的范围

 

  用法

  DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)

  当前值设置为 new_reseed_value,如果自创建表后没有将行插入该表,

  则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识.

  否则,下一个插入的行将使用 new_reseed_value + 1.

  如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。

  比如设定id要从1000开始: DBCC CHECKIDENT ('table_name', RESEED, 1000)

 

  (2)你必须用手动方式在订阅服务器设置标识和不用于复制属性

 

 

订阅服务器一般地说是瓶颈

100-1000 cmds/sec吞吐量

按如下假设延迟量应该是几秒钟:

Cmds/sec < 最大吞吐量

事务量小

要使延迟量减到最小

设分发代理程序和日志读取器代理程序的PollingInterval 参数为1

发布

用默认调用格式

写存储过程来完成批处理作业

把存储过程的运行作为项目来发布(很大的增进!)

建立多个发布和用独立分发代理程序--但发布间不要有事务关联

订阅器

减少分发代理程序与用户和应用程序间的争夺

去掉没有必要的索引

 

复制标识列

 

 

设置列的 NFR (Not For Replication) 属性

在发布方和订阅方设置标识的范围

队列更新支持自动标识范围

双向事务复制要求手动设置标识的范围

DBCC CHECKIDENT RESEED 来在发布方和订阅方设置标识的范围

你必须用手动方式在订阅服务器设置标识和NFR属性

 

尽量减少代理程序的重新启动

 

()因为网络错误,代理程序在10次失败的尝试后会停下

解决方法:在代理程序作业中加一步骤来继续再试

 

()数据的一致性错误,代理程序在遇到重复或遗漏行时会停下

解决方法:企业管理器->工具->复制->配置发布订阅服务器和分发服务器的属性

->代理程序配置->遇到数据一致性错误时继续

 
更改初始发布设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值