当前位置: 首页 > news >正文

在 SQL Server 2025 CU1 中创建 CAG (Contained Availability Group)

SQL Server 2025 CU1 中的 CAG (Contained Availability Group,包含的可用性组)

SQL Server 2025 - AI ready enterprise database from ground to cloud

请访问原文链接:https://sysin.org/blog/sql-server-2025/ 查看最新版。原创作品,转载请保留出处。

作者主页:sysin.org


SQL Server 2025

SQL Server 2025

2026 年 1 月 16 日,微软宣布 SQL Server 2025 在 Red Hat Enterprise Linux (RHEL) 10Ubuntu 24.04 上的正式发布(GA),从 CU1 版本 开始。此里程碑使企业能够在最新的 Linux 发行版上部署 SQL Server 2025,确保关键任务工作负载的稳健兼容性、增强的安全性和最佳性能 (sysin)。正式发布强化了我们在多样化 Linux 环境中提供现代、安全且 AI 就绪数据库平台的承诺。

创建 Contained Availability Group(CAG)

ℹ️ 简介(Introduction)

Contained Availability Group(CAG,包含的可用性组) 的设计目标是通过将系统数据库(master、msdb)封装在可用性组内部,从而简化高可用性和灾难恢复。这意味着登录名、作业、凭据以及其他元数据都会在各副本之间自动复制,无需手动同步,从而降低运维复杂度。

SQL Server 2025 CU1 开始,你可以通过启用会话上下文键,或使用自动化存储过程 [msdb].[dbo].sp_sysutility_cag_create_db直接通过 CAG 监听器创建或还原数据库,而无需连接到物理 SQL Server 实例。

为什么 Contained AGs 很重要

  • 自包含的高可用单元:每个 CAG 都拥有独立的 master 和 msdb 副本,使其不依赖于物理 SQL 实例。
  • 简化故障转移:当 AG 发生故障转移时,所有相关元数据都会随之迁移,确保应用无需人工干预即可继续运行。
  • 更强的自动化能力:适用于限制直接访问 SQL 实例的场景 (sysin),允许通过 AG 监听器完成操作。
  • 增强的安全性:通过限制实例级访问来降低暴露面,操作范围可限定在 AG 上下文内。
  • 精简的管理方式:无需在副本之间编写和维护登录名、作业复制脚本。

Step 1: 为可用性组准备数据库

本示例使用 Linux 上的 SQL Server;但这些步骤同样适用于 Windows 上的 SQL Server。

在本示例中,我们将一个名为 CAGDB 的现有数据库添加到 Contained Availability Group(CAG)中。在将数据库加入 CAG 之前 (sysin),请确认其已配置为 FULL 恢复模式,并执行一次 完整数据库备份

ALTER DATABASE CAGDB SET RECOVERY FULL; GO
BACKUP DATABASE CAGDB TO DISK = N'/var/opt/mssql/backups/CAGDB.bak' WITH INIT, COMPRESSION; GO

注意:在 Linux 上,请确保备份目标目录存在,并且归 mssql 用户所有。

sudo mkdir -p /var/opt/mssql/backups
sudo chown mssql:mssql /var/opt/mssql/backups

Step 2: 创建 Contained Availability Group

在 Linux SQL Server 节点上执行:

CREATE AVAILABILITY GROUP [CAGDemo]
WITH ( CLUSTER_TYPE = EXTERNAL, CONTAINED )
FOR DATABASE [CAGDB]
REPLICA ON
N'node1' WITH (ENDPOINT_URL = N'tcp://node1:5022',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC
),
N'node2' WITH (ENDPOINT_URL = N'tcp://node2:5022',AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,FAILOVER_MODE = EXTERNAL,SEEDING_MODE = AUTOMATIC
);
GO-- 连接到辅助副本并加入 AG
ALTER AVAILABILITY GROUP [CAGDemo] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
ALTER AVAILABILITY GROUP [CAGDemo] GRANT CREATE ANY DATABASE;

Step 3: 配置监听器并连接

创建监听器,并使用 SSMS 或 sqlcmd 进行连接:

ALTER AVAILABILITY GROUP [CAGDemo]
ADD LISTENER N'CAGDemoListener'
(WITH IP ( (N'*.*.*.*', N'255.255.255.0') ),PORT = 1453
);
GO

Step 4: 通过 CAGDemoListener 连接并尝试创建数据库(失败)

通过监听器连接后执行:

CREATE DATABASE TestCAGDB;

结果:Msg 262, Level 14, State 1: CREATE DATABASE is not allowed in this context.

这是因为在包含的 AG 会话中 (sysin),默认禁止创建数据库。

Step 5: 在 CAG 会话或实例 master 中启用数据库创建

EXEC sp_set_session_context = N'allow_cag_create_db', @value = 1;

此操作会为当前会话启用数据库创建权限。

Step 5: 再次尝试创建数据库(成功)

CREATE DATABASE TestCAGDB;

结果:数据库已在包含的 AG 上下文中成功创建。

只有在 CAG 上下文中拥有 dbcreator 角色的用户才能执行该操作。

Step 6: 备份数据库

ALTER DATABASE TestCAGDB SET RECOVERY FULL;
BACKUP DATABASE TestCAGDB TO DISK = N'/var/opt/mssql/data/backups/TestCAGDB.bak';

Step 7: 将数据库添加到 CAG

ALTER AVAILABILITY GROUP [CAGDemo] ADD DATABASE [TestCAGDB];

Automation

要自动化执行第 4 到第 7 步,请在通过 CAG 监听器连接的上下文中执行以下存储过程:

EXEC [msdb].[dbo].sp_sysutility_cag_create_db @database_name = [ADVENTUREWORKS];

🧩 结论(Conclusion)

Contained Availability Group 在简化 SQL Server 高可用性方面迈出了重要一步。通过将系统数据库封装在 AG 上下文中,它消除了在副本之间同步登录名、作业和凭据的复杂性。

借助 SQL Server 2025 CU1 中新增的能力,组织现在可以通过 sp_set_session_context 直接从 AG 监听器创建或还原数据库,从而简化自动化流程并降低运维开销。

📚 参考资料(References)

  • 什么是 Contained Availability Group
  • 在 Linux 上为 SQL Server 部署 Pacemaker 集群

部分内容来自官网,有删改。

补丁更新及下载

SQL Server 2025 RTM 64-Bit English/简体中文/繁体中文 (Evaluation, Enterprise Developer, Standard Developer, Express)

  • 请访问:https://sysin.org/blog/sql-server-2025/

SQL Server 2025 RTM 64-Bit English/简体中文/繁体中文 (Enterprise, Standard)

  • 请访问:https://sysin.org/blog/sql-server-2025/

索引页面:

  • Microsoft SQL Server 下载汇总

更多:Windows 下载汇总

http://www.jsqmd.com/news/298609/

相关文章:

  • GPT-5.2-Pro与Sora2全面爆发:普通开发者如何低成本构建AGI级应用?(附多模态整合架构图)
  • 文字游戏:进化之路2.0二开完美版本源码 带后台
  • 基于Kubo公式的石墨烯电导率与表面阻抗计算(MATLAB实现)
  • C#核心
  • C#进阶
  • 2026年市场上有名的打包带厂家排行,市场上有实力的打包带直销厂家广营宏利满足多元需求
  • BES(恒玄)蓝牙平台EQ 调试和设定
  • 将分散的Pytest测试脚本统一接入测试平台:FastAPI改造方案详解
  • 基于模糊控制的MATLAB避障算法实现
  • 为什么网络上搜索不到“桑桥网络”这家公司了?
  • 说说上海MNS2.0配电柜批量定制,如何选择厂家?
  • 2026年阜阳地区,为你分享专业的新能源汽修培训职业学校推荐
  • 自助KTV加盟哪家服务靠谱,长春鱼乐圈资料汇总
  • 2026年全国实力强的博士留学机构排名推荐,这些企业值得关注
  • 2025年成都火锅人气排行:3公里内口碑爆表的十大必吃店,牛肉火锅/麻辣烫/美食/市井火锅nbsp;成都火锅约会地点哪家好吃
  • 聊聊2026年别墅外墙砖靠谱厂家,广东和陶家居实力上榜
  • 读书笔记三:从需求到交付,坚守软件质量的核心底线
  • 金属带材环保电镀费用知多少,哪家收费合理?
  • 详细介绍:STM32外设学习--DMA直接存储器读取--学习笔记。
  • 基于STM32的智能宠物监控设计与实现
  • 基于STM32的智能家居安防系统
  • 基于STM32的智能导盲杖设计与实现
  • 基于STM32的智能楼梯灯系统
  • Vue 3 中的具名插槽仍然完全支持,Vue 2 的旧语法 Vue 3 中已废弃
  • 2026年全国靠谱的股权激励公司排名,创锟股权激励咨询实力入选值得关注
  • 鱼乐圈自助ktv音效好不好,分享值得选择的店铺排名
  • 盘点2026易切削钢专业厂家,宁波、杭州优质厂商Top10
  • 2026年重点关注金属制造企业,金轮精密的服务水平靠谱吗?
  • 详细介绍:Nature Communications|3D 打印仿生 SA-II 神经,让假肢感知拉伸
  • 2026年金属带材电镀源头厂家排名,重庆地区优质企业全揭秘