SQL SERVER Transactional Replication中添加新表如何不初始化整个快照
在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的。但是在已有的复制(发布订阅)当中增加新表/文章,往往需要将整个快照重新初始化,这样做虽然简单,但是往往在实际应用中会出现一些问题,例如,发布订阅的表比较多,数据量比较大,那么重新初始化快照往往需要很长一段时间,影响系统正常运行。另外就是这样做会增大服务器的负荷,影响网络带宽.
那么是否可以在新增表/文章后,不用初始化整个快照,而只是初始化新增的表呢? 当然可以,下面以一个小案例来讲述一下如何操作:
在数据库TTT上建立了名为RPL_TTT的发布,要发布的对象为WipNoToReed和WipNoToStarch这两张表,在另外一个服务器的数据库Test上订阅了该发布。现在由于需求变跟,需要增加一张表WipNoToLoosen
我们可以按照下面三个步骤来操作,如下所示:
1:使用sp_helppublication查看该发布的相关信息,如下所示,你会看到默认情况下,'immediate_sync' 和 'allow_anonymous'这两个属性都是启用的。我们首先需要禁用这两个属性。
allow_anonymous 表示是否允许对发布使用匿名订阅。
immediate_sync 表示是否在每次快照代理运行时创建或重新创建同步文件。
use TTT;
go
sp_helppublication;
或
use TTT;
go
exec sp_helppublication 'RPL_TTT';
--Run on your publisher database
use TTT;
go
EXEC sp_changepublication
@publication = 'RPL_TTT',
@property = 'allow_anonymous' ,
@value = 'false'
GO
EXEC sp_changepublication
@publication = 'RPL_TTT',
@property = 'immediate_sync' ,
@value = 'false'
GO
2:在本地发布当中找到"RPL_TTT",然后在"项目"当中增加表WipNoToLoosen,当然你也可以使用 sp_addarticle命令添加。如下所示:

3:在发布"RPL_TTT"上,右键单击“查看快照代理状态”,在弹出的窗口上选择“启动”,你会发现快照只会初始化一个表而不是整个三个表。
命令执行完成后,你会发现该表的subscription_status变为了2,如下所示

至于完成后,'immediate_sync' 和 'allow_anonymous'这两个属性如果你要启动的话,也是非常简单容易的。不启用也问题不大。
SQL SERVER Transactional Replication中添加新表如何不初始化整个快照的更多相关文章
- 【SQL server初级】SQL SERVER Transactional Replication中添加新表如何不初始化整个快照
在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的.但是在已有的复制(发布订阅) ...
- SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”
原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...
- SQL Server 判断数据库中是否存在表
使用场景 可以反复的执行相同脚本 方式1:查询sysobjects表 if EXISTS (SELECT * from sysobjects WHERE name='test_table') DROP ...
- SQL Server查询数据库中所有的表名及行数
SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = ...
- 向SQL Server 现有表中添加新列并添加描述.
注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先 ...
- SQL Server R2 2008中的SQL Server Management Studio 阻止保存要求重新创建表的更改问题的设置方法
在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你. SQL Server 2008“阻止保存要求重新创建表的更改”的错误的解决方案是本 ...
- SQL SERVER增加、删除、更改表中的字段名 (详询请加qq:2085920154)
1. 向表中添加新的字段 alter table table_name add column_name varchar2(20) not null 2. 删除表中的一个字段 delete t ...
- MS SQL Server Management Studio中提示不允许保长度出现不允许保存更改。您所做的更改要求删除并重新创建以下表
在SQL Server Management Studio中直接修改正在连接的表结构会出现改不了的情况,如下图 解决方法:工具-选项-设计器--阻止保存要求重新创建表的更改,去掉对勾--确定即可
- SqlServer表中添加新字段
表中添加新字段ALTER TABLE 表名 ADD 字段名 VARCHAR(20) NULL 表中添加自增idalter table lianxi add id int primary key IDE ...
随机推荐
- 软件工程 Coding.net代码托管平台 Git初学者的使用总结 五步完成 程序,文件,文件夹的Git
一.前言 第一次用git相关的命令行,我使用的是Coding.net代码托管平台.Coding.net 自主打造的基于 Git 的代码托管平台,提供高性能的远端仓库,还有保护分支,历史版本分屏对比. ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
- java枚举类型学习
用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举.参考:java编程思想. Update: 枚举可以当做数据字典来存储,通常只要一个字段即instance本身,toString ...
- 浅解析js中的对象
浅解析js中的对象 原文网址:http://www.cnblogs.com/foodoir/p/5971686.html,转载请注明出处. 前面的话: 说到对象,我首先想到的是每到过年过节见长辈的时候 ...
- 原生AJAX入门讲解(含实例)
相对于jQuery.YUI以及其他一些类库的AJAX封装,原生JS的AJAX显得那么的尴尬,兼容性不好,要记很多的方法属性,调用不便捷,代码臃肿...但我还是想说,原生JS才是最根本最底层的知识(虽然 ...
- Rafy 领域实体框架示例(1) - 转换传统三层应用程序
Rafy 领域实体框架发布后,虽然有帮助文档,许多朋友还是反映学习起来比较复杂,希望能开发一个示例程序,展示如何使用 Rafy 领域实体框架所以,本文通过使用 Rafy 领域实体框架来改造一个传统的三 ...
- C#基础-技术还债2-枚举
定一个枚举如下: using System; using System.Collections.Generic; using System.Linq; using System.Reflection; ...
- 《Pro ASP.NET MVC 4》异常整理
最近在和同学一起研究毕业设计,准备模仿<Pro ASP.NET MVC 4>里面的SportsStore设计模式和测试驱动开发. 由于和书中VS版本不同,发现不少问题,在此总结. 用户代码 ...
- 如何在windows下的Python开发工具IDLE里安装其他模块?
以安装Httplib2模块为例 1 下载模块 到 “https://code.google.com/p/httplib2/” 下载一款适合你的压缩包“httplib2-0.4.0.zip” 2 解压下 ...
- thinkphp学习简易教程(二) thinkphp连接读取MySQL数据库
首先, 在本地服务器中新建项目APP,依据第一讲中的步骤配置好thinkphp,这里为了测试方便,不分前台和后台模块,统一把模块路径设为'./APP/'. 1.新建数据库myapp,以及数据库表thi ...




