SQL Server Replication 总结
合并复制中,数据库架构的更改要重新生成发布端的快照
在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 总结的更多相关文章
- SQL Server Replication 中关于视图的点滴
在服务器A数据库TEST新建了一个本地发布(Local Publications)RPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅(Local Subscript ...
- 如何用SQL脚本在SQL Server Replication中创建合并复制,以及怎么创建分区合并复制
假设我们要创建合并复制的发布端数据库是EFDemo其中有四张表,订阅端数据库是EFDemoSubscription,如下图所示: 首先创建发布端快照代理Sql agent job:"EFDe ...
- SQL Server Replication的分发服务器的快照文件夹位置查找
SQL Server分发服务器配置中,需要配置快照文件夹(Snapshot Folder),用于存储发布的数据和架构文件的工作目录,那么如何查找当前SQL Server数据库服务器的分发服务器的快照文 ...
- 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 ...
- 通过SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...
- SQL Server翻译目录
从SQLServerCentral翻译部分Stairways文章,设置目录方便阅读(2015-12更新)SQL Server代理系列第一篇 SQL Server代理概述第二篇 SQL Server代理 ...
- SQL Server复制入门(一)----复制简介【转】
SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...
- sql server 2008数据复制
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...
- SQL Server事务 事务日志
事务 (SQL Server) 一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统 ...
随机推荐
- Redis for Windows
要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); redis64-2.8.17 下载地址 环境下载 什么是Redis redis是一个key-value存储系统.和Me ...
- MySQL的视图view,视图创建后,会随着表的改变而自动改变数据
首先是创建视图 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `new_view` A ...
- 解决webstorm本地IP访问页面出错的问题
想在手机端访问webstorm做出的页面,遇到了根据IP地址访问页面错误的问题,试了网上的方法:“设置webstorm可以被外部连接访问”,依旧不能解决 解决方法: 在webstorm下:ctrl+a ...
- 【SpringBoot系列4】SpringBoot定制自己的bean
起因:SpringBoot我是越用越喜欢,但当SpringBoot出了问题的时候,我却无从下手,因为封装实在是太高度化了.然后之前有一个需求,使用SpringBoot提供的StringRedisTem ...
- 分布式理论(三)—— 一致性协议之 2PC
前言 为了使系统尽量能够达到 CAP,于是有了 BASE 协议,而 BASE 协议是在可用性和一致性之间做的取舍和妥协. 人们往往需要在系统的可用性和数据一致性之间反复的权衡.于是呢,就产生我们标题中 ...
- [转]DevOps实战:百度持续交付体系与最佳实践大解密!
本文转自:http://dbaplus.cn/news-21-471-1.html “互联网+”时代,软件产品要想满足快速增长的用户需求,高效.快速的迭代转型必不可少,面对时刻发生改变的互联网及业务模 ...
- [转]webpack4.0.1安装问题和webpack.config.js的配置变化
本文转自:https://blog.csdn.net/jiang7701037/article/details/79403637 The CLI moved into a separate packa ...
- AngularJS学习笔记(一)走近AngularJS
什么是AngularJS AngularJS是一款优秀的前端JS框架,是Google多款产品之一,简称ng. ng有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入 ...
- Gold Rush(hnu13249)
Gold Rush Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:65536KB Total submit users: 15 ...
- HDU1045(KB10-A 二分图最大匹配)
Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...