在已有事务复制中,时长需要新增表、索引,这些变更时不会同步到从库中。如果采用默认的设置,每次都需要重新初始化快照,从库重新应用快照和未执行的同步命令,这显然是无法在线上实践的方法。另一种方法是将新增的架构变更新建一个发布订阅,但会造成维护困难,增加出错的几率。
       可以通过设置immediate_sync和allow_anonymous 来实现不重新初始化快照的前提下新增表。
       先看着两个参数的含义:
       immediate_sync:指定每次运行快照代理时是否为发布创建同步文件。 immediate_synchronization 的数据类型为 nvarchar(5),默认值为 FALSE。 如果为 True,表示每次运行快照代理时都创建或重新创建同步文件。 如果快照代理在订阅创建前完成,则订阅服务器可以立即获得同步文件。 新订阅将获取最近一次执行快照代理所生成的最新同步文件。 independent_agent 必须为 true,以便于 immediate_synchronization 为 true。 如果为 False,则仅当有新订阅时,才创建同步文件。 当以增量方式向现有发布添加新项目时,必须为每个订阅调用 sp_addsubscription。 订阅后订阅服务器无法接收同步文件,直到启动并完成快照代理为止。
       allow_anonymous:指定是否可为给定发布创建匿名订阅。 allow_anonymous 的数据类型为 nvarchar(5),默认值为 FALSE。 如果为 True,则 immediate_synchronization 也必须设置为 True。 如果为 False,则表示不允许对该发布创建匿名订阅。
       从定义中看出来,immediate_sync为false时,新的项目(表、存储过程等)可以以增量方式发布,而allow_anonymous必须为false,immediate_sync才能为false。
 
  

##注意:从定义中看出来,immediate_sync为false时,新的项目(表、存储过程等)可以以增量方式发布,而allow_anonymous也必须为false,immediate_sync才能为false。

##同时如果删除发布项目的中已发布的表/函数/存储过程/字段订阅库中的对应的表/函数/存储过程/字段仍然被保留,如要删除必须手工操作

案列,创建了一个数据库masterdb,创建一张表t: 
CREATE TABLE t( id INT ,NAME VARCHAR( 10),CONSTRAINT pk_t PRIMARY KEY (id))
INSERT INTO t VALUES(1 ,1),( 2,2 ),(3, 3)
订阅名为repl_master,订阅数据库slavedb。
查看现有数据库这两个属性的设置,现在设置都是1
USE msterdb
sp_helppublication;
或者:
select immediate_sync ,allow_anonymous from dbo .syspublications

修改这两个参数为0:
use msterdb ;
go
EXEC sp_changepublication
@publication = 'repl_master',
@property = 'allow_anonymous' ,
@value = 'false'
GO
EXEC sp_changepublication
@publication = 'repl_master',
@property = 'immediate_sync' ,
@value = 'false'
GO

新建一个表,并进行发布
CREATE TABLE t1( id INT ,NAME VARCHAR( 10),CONSTRAINT pk_t1 PRIMARY KEY(id ))
INSERT INTO t1 VALUES(1 ,1),( 2,2 ),(3, 3)

在发布属性的项目中勾选新增表:

在复制监视器中启动代理,看到

日志生成状况:

查看从库,表t1已经同步。

删除同步就比较简单了,只需要在发布的项目中删除该项目就行,但是在订阅数据库中依然保留该表,需要手动drop

##注:新增函数/存储过程类似如上操作,新增字段直接在发布库执行即可

【sql server复制】不重新初始化快照的情况下新增表/存储过程/函数等的更多相关文章

  1. sqlserver同步后在不重新初始化快照的情况下新增表

           在已有事务复制中,时长需要新增表.索引,这些变更时不会同步到从库中.如果采用默认的设置,每次都需要重新初始化快照,从库重新应用快照和未执行的同步命令,这显然是无法在线上实践的方法.另一种 ...

  2. 【查阅】教你使用SQL SERVER复制

    关键词:复制,复制总结,复制汇总,复制查阅 1.概念与搭建 Step1:SQL SERVER复制介绍 Step2:SQL Server 复制事务发布 Step3:SQL Server 通过备份文件初始 ...

  3. 玩转SQL Server复制回路の变更数据类型、未分区表转为分区表

    玩转SQL Server复制回路の变更数据类型.未分区表转为分区表 复制的应用: 初级应用:读写分离.数据库备份 高级应用:搬迁大型数据库(跨机房).变更数据类型.未分区表转为分区表 京东的复制专家 ...

  4. SQL Server 复制订阅

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/高性能解决方案/高可用 概述 配置复制就没有数据库镜像和AlwaysOn的要求那么高,只需要两台服务器能通过TCP进行通讯即可,两 ...

  5. SQL Server 复制:事务发布

    一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到 ...

  6. SQL Server复制入门(一)----复制简介

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  7. SQL Server复制入门(一)----复制简介【转】

    SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...

  8. (初稿)SQL Server 复制(Replication)系列(2)——事务复制搭建

    原文:(初稿)SQL Server 复制(Replication)系列(2)--事务复制搭建 本文演示如何搭建最基本的事务复制. 环境准备: 虚拟机2台: 服务器名分别为RepA和RepB,RepA为 ...

  9. 第十六周翻译-SQL Server复制的阶梯:第1级 - SQL Server复制简介

    SQL Server复制的阶梯:第1级 -  SQL Server复制简介 作者:Sebastian Meine,2012年12月26日 翻译:赖慧芳 译文: 该系列 本文是Stairway系列的一部 ...

随机推荐

  1. CQRS架构下的Saga流程重构

  2. 超好用的input模糊搜索 jq模糊搜索,

    上来先展示效果:默认展示效果: 输入内容: 上代码: css部分: <style type="text/css"> * { padding:; margin:; } h ...

  3. YUM源使用阿里镜像

    备份系统自带的yum源 # 前提:需要联网才能使用 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bac ...

  4. 花式赋值、列表、字典、解压缩、input()、格式化学习笔记

    目录 花式赋值 列表(list) 字典(dict) 解压缩 input()与用户交互 格式化的三种方式 f_String格式化(important) %s.%d占位符 format 格式化(不常用) ...

  5. 【NOIP2016提高A组模拟8.14】疯狂的火神

    题目 火神为了检验zone的力量,他决定单挑n个人. 由于火神训练时间有限,最多只有t分钟,所以他可以选择一部分人来单挑,由于有丽子的帮助,他得到了每个人特定的价值,每个人的价值由一个三元组(a,b, ...

  6. 【leetcode】1128. Number of Equivalent Domino Pairs

    题目如下: Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and on ...

  7. python+selenium实现发送一封带附件的邮件

    163邮件登录首页 登录成功断言是否有退出按钮 点击退出退出登录 from selenium import webdriver import unittest import time class Vi ...

  8. nasm不是内部或外部命令

    使用nasm编译汇编的源文件: nasm -f bin first.asm -o first.bin 报错:nasm不是内部或外部命令,这种错误一看就知道,是没有配置环境变量. 点开后,选择path, ...

  9. php array_pop()函数 语法

    php array_pop()函数 语法 作用:删除数组中的最后一个元素.博智达 语法:array_pop(array) 参数: 参数 描述 array 必需.规定数组.     说明:返回数组的最后 ...

  10. [洛谷P3938]:斐波那契(fibonacci)(数学)

    题目传送门 题目描述 小$C$养了一些很可爱的兔子.有一天,小$C$突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子 ...