合并复制中,数据库架构的更改要重新生成发布端的快照


在SQL Server 合并复制中,如果在发布端做了数据库架构的更改(例如新建表,更改表结构等),原则上来说都需要重新生成发布端的快照,订阅端才能同步这些更改(订阅端要“重新初始化”)。

但是我发现目前SQL Server 2016中,如果只是更改发布端表的列类型、甚至新加一列,即便是不重新生成发布端快照,订阅端只要同步一次,那么这些更改也会同步到订阅端表上。但是如果是在发布端表上新增了一个索引,那么就必须重新生成发布端快照,并且重新初始化订阅端,新加的索引才能从发布端同步到订阅端。

所以原则上来说只要是更改了数据库中对象的架构,那么还是推荐大家,重新生成发布端的快照,并且重新初始化订阅端,这样能够百分之百保证发布端和订阅端保持一致。

订阅端不能做数据库对象架构的更改


如果用下面语句更改订阅端数据库的表Person,对其增加一个列Cash会失败,错误如下:

ALTER TABLE [dbo].[Person]
ADD Cash decimal(20,2)
Msg 21531, Level 16, State 1, Procedure sp_MSmerge_altertable, Line 377 [Batch Start Line 0]
The data definition language (DDL) command cannot be executed at the Subscriber. DDL commands can only be executed at the Publisher. In a republishing hierarchy, DDL commands can only be executed at the root Publisher, not at any of the republishing Subscribers.
Msg 21530, Level 16, State 1, Procedure sp_MSmerge_ddldispatcher, Line 191 [Batch Start Line 0]
The schema change failed during execution of an internal replication procedure. For corrective action, see the other error messages that accompany this error message.
Msg 3609, Level 16, State 2, Line 1
The transaction ended in the trigger. The batch has been aborted.

可以看到错误提示,只能在发布端执行DDL命令,无法在订阅端执行DDL命令。

Replication目前的支持度


文件表

目前在SQL Server 2016中,FileTable表不支持Replication,如下图所示:

但是如果是包含FILESTREAM列的普通表,是可以支持Replication的

CREATE TABLE Attachment (
[ID] [UNIQUEIDENTIFIER] ROWGUIDCOL NOT NULL PRIMARY KEY,
[FileName] NVARCHAR(100) NULL,
[CreateUser] NVARCHAR(100) NULL,
[CreateDatetime] DATETIME NULL,
[Content] VARBINARY(MAX) FILESTREAM NULL
)
FILESTREAM_ON FileStreamGroupFirst

内存优化表

目前在SQL Server 2016中,内存优化表还不支持Replication

下图中表Reseller实际上是一个内存优化表,可以看到在合并复制的Articles中其可以被选中:

但是点击OK按钮后,会提示错误如下:

提示内存优化表不支持Replication,这算是一个遗憾,不知道以后的SQL Server版本是否会让内存优化表支持Replication

SQL Server Replication 总结的更多相关文章

  1. SQL Server Replication 中关于视图的点滴

    在服务器A数据库TEST新建了一个本地发布(Local Publications)RPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅(Local Subscript ...

  2. 如何用SQL脚本在SQL Server Replication中创建合并复制,以及怎么创建分区合并复制

    假设我们要创建合并复制的发布端数据库是EFDemo其中有四张表,订阅端数据库是EFDemoSubscription,如下图所示: 首先创建发布端快照代理Sql agent job:"EFDe ...

  3. SQL Server Replication的分发服务器的快照文件夹位置查找

    SQL Server分发服务器配置中,需要配置快照文件夹(Snapshot Folder),用于存储发布的数据和架构文件的工作目录,那么如何查找当前SQL Server数据库服务器的分发服务器的快照文 ...

  4. SQL Server Replication issues-the row was not found at the subscriber end

    Issue type: 1.find out the number 0x0006F18F00006082002300000000 from publication end. 2.use below s ...

  5. 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...

  6. SQL Server翻译目录

    从SQLServerCentral翻译部分Stairways文章,设置目录方便阅读(2015-12更新)SQL Server代理系列第一篇 SQL Server代理概述第二篇 SQL Server代理 ...

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

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

  8. sql server 2008数据复制

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...

  9. SQL Server事务 事务日志

    事务 (SQL Server) 一.事务概念    事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统 ...

随机推荐

  1. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(五):模块化切分

    切分工程 考虑到后续我们的模块会越来越多,依赖的公共代码和配置需要集中管理,我们在这里先把公共模块和配置从后台管理业务中剥离出来. 新增两个工程,切分后结构如下: kitty-boot:启动器及全局配 ...

  2. mysql数据库中实现内连接、左连接、右连接

    原文:http://www.cnblogs.com/xwdreamer/archive/2010/12/15/2297058.html 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把 ...

  3. java多线程总结:线程的两种创建方式及优劣比较

    1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现 ...

  4. RocketMQ专题2:三种常用生产消费方式(顺序、广播、定时)以及顺序消费源码探究

    顺序.广播.定时任务 前插 ​ 在进行常用的三种消息类型例子展示的时候,我们先来说一说RocketMQ的几个重要概念: PullConsumer与PushConsumer:主要区别在于Pull与Pus ...

  5. c# LINQ用法

    一.什么是LINQ LINQ(读音link)代表语言集成查询(Language Integrated Query),是.NEt框架的扩展,它允许我们用SQL查询数据库的方式来查询数据的集合,使用它,你 ...

  6. NYOJ 1013 除法表达式(欧几里德算法+唯一分解定理)

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1013 描述 给出一个这样的除法表达式:X1/X2/X3/···/Xk,其中Xi是 ...

  7. java面向对象基础(三):对象转型和多态

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. 月赛 && SX_ACM 惨痛教训

    1.cnt变量若有多次询问,一定要记得初始化!!! 2.多组数据输出入,区泛~. 3.高性能问题,考虑位运算,

  9. Re0:从零学习node.js

    起小项目 express xxx 镜像 npm install npm install npm start 创建自己的端口...

  10. Evolution(矩阵快速幂)zoj2853

    Evolution Time Limit: 5 Seconds      Memory Limit: 32768 KB Description Evolution is a long, long pr ...