作者:happydreamer
一 更改初始发布设置(一) 在发布服务器中增加或减少表 (注意: 不能有订阅)
企业管理器->工具-> 复制->创建和管理发布->选择发布的数据库->属性和订阅->项目中可以添加表
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)你必须用手动方式在订阅服务器设置标识和不用于复制属性