SQLServer 可更新订阅数据在线架构更改(增加字段)方案

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 原文:SQLServer 可更新订阅数据在线架构更改(增加字段)方案 之前一直查找冲突发布和订阅数据不一致的原因,后来发现多少数据库升级引起,因为一直以来都是在发布数据库增加字段,订阅也会自动同步。
原文: SQLServer 可更新订阅数据在线架构更改(增加字段)方案

之前一直查找冲突发布和订阅数据不一致的原因,后来发现多少数据库升级引起,因为一直以来都是在发布数据库增加字段,订阅也会自动同步。在此时如果订阅队列有数据,这些数据将丢失。参考上一篇说明:SQLServer 可更新订阅数据冲突的一个原因 。当在发布数据库增加一个字段时,系统同步存储过程和触发器都会重新生成,这会导致仍在队列中的数据无法正常同步。订阅队列中的命令将因“同步”后消失,代理有可能出错,但也会自动回复正常!~


这周测试了一些方法,最终算是确定一个方案可行的,虽然麻烦和耗时。

首先看简单的架构图:


上图中,上面为发布服务器,下面为订阅服务器。以一个表为例,正常发布为 Table T1 的可更新订阅发布,数据双向同步,用户都是在订阅数据库操作,都是操作视图。增加字段时,为了使用户能够在订阅正常操作,再创建一个发布订阅,只发布一张表,数据太多时初始化会较久。注意:新的发布不能是同一个数据库!如果是同一个数据库,为了避免和原来的表名一样,更改了新订阅的表名,会导致 发布到原来的订阅数据不同步!所以新的订阅在另一个数据库上,保持表名称一致!因为系统调用的存储过程表结构一致。~如上图,所以一个发布中,在订阅服务器中要求两个数据库订阅,其中一个发布订阅只有一张表,该表将是新增字段的表。此时3张表都同步发布双向同步。


因为用户都是操作视图的,所以视图的定义改为到新的数据库表中,用户操作仍正常,数据同步也正常。对新增加的发布,禁止架构同步,发布数据库增加字段时,不会同步到新订阅表中,但是会同步到原订阅表中。待字段同步完成后,视图定义改回原来的表,此时发布和订阅都有新字段了。而作为中介创建的的发布订阅可以删除了!~


主要步骤如下:

1.  确保发布和订阅数据一致

2.  创建1个可更新订阅发布,只发布1张表 (发布数据库执行)

3.  新发布的“冲突解决策略”: 保留发布服务器更改(发布属性更改)

4.  新发布的“复制架构更改”: false(发布属性更改)

5.  创建订阅(订阅服务器新的数据库)

6.  更改作业所有者;初始化订阅;等待完成…………

7.  发布更改视图定义(会同步到原订阅中),使用另一个数据库的订阅表(发布数据库执行,注意订阅表权限问题)

8.  确定原订阅的队列已经同步完成

9.  发布数据库中对表增加字段(自动同步到原订阅中,新订阅不同步)

10. 订阅队列如无积累,更改发布视图的定义,使用原来数据库的表(发布数据库执行)

11. 最后删除新创建的发布


--1.	确保发布和订阅数据一致
--2.	创建可更新订阅(筛选)发布,只发布1表(发布数据库执行)
--3.	新发布的“冲突解决策略”: 保留发布服务器更改(发布属性)
EXEC sp_changepublication @publication = N'temp02', @property = N'conflict_policy', @value = N'pub wins'
EXEC sp_changepublication @publication = N'temp03', @property = N'conflict_policy', @value = N'pub wins'

--4.	新发布的“复制架构更改”: false(发布属性)
EXEC sp_changepublication @publication = N'temp02', @property = N'replicate_ddl', @value = 0
EXEC sp_changepublication @publication = N'temp03', @property = N'replicate_ddl', @value = 0

--5.	创建订阅(订阅服务器新的数据库)
--6.	更改作业所有者;初始化4个订阅;等待完成…………
--7.	发布更改视图定义,使用另一个数据库的订阅表(发布数据库执行,注意订阅表权限问题)
ALTER VIEW [dbo].[VTestTab]  
as  
SELECT Identifier,Name,value,info  
FROM DemoDB.dbo.TestTab --另一个订阅数据库的表
GO

--8.	确定原订阅的队列已经同步完成
--9.	发布数据库中对表增加字段(自动同步到原订阅中)
ALTER TABLE dbo.TestTab ADD TEST INT

--10.订阅队列无太多,则更改发布视图定义,使用原来数据库的表(发布数据库执行)
ALTER VIEW [dbo].[VTestTab]  
as  
SELECT Identifier,Name,value,info  
FROM dbo.TestTab 
GO

--11.删除新创建的发布


测试完成!~个人测试正常,还未应用到生产库中。其中最麻烦的是要初始化表数据,这是主要耗时的。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
193 3
Mysql高可用架构方案
|
13天前
|
决策智能 数据库 开发者
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
本项目旨在解决智能体的“超级入口”问题,通过开发基于意图识别的多智能体框架,实现用户通过单一交互入口使用所有智能体。项目依托阿里开源的Qwen2.5大模型,利用其强大的FunctionCall能力,精准识别用户意图并调用相应智能体。 核心功能包括: - 意图识别:基于Qwen2.5的大模型方法调用能力,准确识别用户意图。 - 业务调用中心:解耦框架与业务逻辑,集中处理业务方法调用,提升系统灵活性。 - 会话管理:支持连续对话,保存用户会话历史,确保上下文连贯性。 - 流式返回:支持打字机效果的流式返回,增强用户体验。 感谢Qwen2.5系列大模型的支持,使项目得以顺利实施。
199 8
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
|
1月前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
2月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
19天前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
19天前
|
弹性计算 负载均衡 安全
企业业务上云经典架构方案整体介绍
本次课程由阿里云产品经理晋侨分享,主题为企业业务上云经典架构。内容涵盖用户业务架构现状及挑战、阿里云业务托管经典架构设计、方案涉及的产品选型配置,以及业务初期如何低门槛使用。课程详细介绍了企业业务上云的全流程,帮助用户实现高可用、稳定、可扩展的云架构。
|
2月前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
3月前
|
存储 缓存 NoSQL
分布式架构下 Session 共享的方案
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求、系统架构和性能要求等因素,选择合适的 Session 共享方案。同时,还需要不断地进行优化和调整,以确保系统的稳定性和可靠性。
|
3月前
sqlserver实现取相同名称放在同一字段
sqlserver实现取相同名称放在同一字段
35 2
|
4月前
|
存储 弹性计算 SDN
企业级 ECS 集群的构建需要综合考虑多个因素,通过不断的比较和对比不同的方案,选择最适合企业自身需求和发展的架构。
【9月更文挑战第5天】在数字化商业环境中,构建企业级ECS(弹性计算服务)集群对提升业务稳定性、扩展性和性能至关重要。本文将比较传统物理服务器与ECS架构,分析云服务商选择(如AWS和阿里云)、实例配置(CPU/内存)、网络架构(SDN vs 传统)及存储方案(本地存储 vs 云存储),帮助企业根据自身需求选出最优方案,实现高效稳定的ECS集群部署。
84 18

热门文章

最新文章