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


作者:happydreamer

一  更改初始发布设置  
http://www.faq-it.org/asm/">faq-it.org/asm/  
 
(一)  在发布服务器中增加或减少表  (注意:  不能有订阅)  
企业管理器->工具->  复制->创建和管理发布->选择发布的数据库->属性和订阅->项目中可以添加表  
 
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  (' rel="nofollow"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)你必须用手动方式在订阅服务器设置标识和不用于复制属性 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值