首页 技术 正文
技术 2022年11月8日
0 收藏 479 点赞 1,966 浏览 1608 个字

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


在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,如下图所示:

SQL Server 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 Replication 总结

内存优化表

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

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

SQL Server Replication 总结

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

SQL Server Replication 总结

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295