RDS SQL Server 如何设置为快照隔离级别 READ_COMMITTED_SNAPSHOT

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: RDS SQL Server 如何设置为快照隔离级别 READ_COMMITTED_SNAPSHOT

问题描述


RDS SQL Server 如何设置为快照隔离级别 READ_COMMITTED_SNAPSHOT


前提条件

设置快照条件:

  1. 设置快照隔离有运行alter database 命令权限。
  2. 执行此命令时,不能有任何连接到此数据库的活动连接。
  3. 数据库不是必须设置单用户模式。
  4. 当数据库为脱机状态,无法执行此操作。
  5. 数据库为云盘版实例


场景1:RDS SQL Server 高可用版本


执行SQL:

ALTER DATABASE ""SET READ_COMMITTED_SNAPSHOT ON;

报错:

Msg 1468, Level 16, State 6, Line 19The operation cannot be performed on database "" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session orin an availability group.
Msg 5069, Level 16, State 1, Line 19ALTER DATABASE statement failed.

原因

由于 RDS SQL Server 实例是高可用版本,所以会一直有活动连接进行主备之间同步数据,导致不能设置成功。


解决方案


1. 关闭镜像

示例数据名称:db10,参考更改此名称。

ALTER DATABASE db10 SET PARTNER OFF;

2. 检查是否还有其它会话使用此数据库

select*from sys.sysprocesseswhere dbid = db_id('db10');

3.若存在会话,可以使用kill spid 直接杀掉

注:若存在大事务会话,要自行评估,是否需要等待会话执行完成。直接kill,事务需要回滚,回滚时长至少是事务已经执行的时长。


4. 执行配置快照设置

ALTER DATABASE db10 SET READ_COMMITTED_SNAPSHOT ON;



场景2: RDS SQL Server 基础版本和集群版本

问题:一直无法执行成功


原因

有其它会话阻塞此会话,设置快照隔离。



解决方案

  1. 检查是否还有活跃会话(脚本同场景1)
  2. kill 活跃会话(脚本同场景1)
  3. 执行配置快照隔离操作(脚本同场景1)


附:其它相关命令

查看指定数据库快照隔离是否开启

SELECT name,is_read_committed_snapshot_on FROM sys.databasesWHERE name ='db10';

查看数据库是否开启镜像同步

SELECT DB_NAME(database_id),mirroring_state,mirroring_state_desc,mirroring_role_desc FROM sys.database_mirroringWHERE DB_NAME(database_id)='db10';



适用于

云盘版:


RDS SQL Server 高可用版本、集群版本、基础版本。(直接检查活动连接即可)


注:本地盘为什么不支持

因产品侧限制,所以本地盘实例无法设置,如截图,会出现类似报错

Procedure TGR#ALTERDATABASE, ... Current user 用户名 have no permission


参考文档:

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options?view=sql-server-ver15

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
11 2
|
7月前
|
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
97 2
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
309 9
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
122 12
突破T-SQL限制:利用CLR集成扩展RDS SQL Server的功能边界
CLR集成为SQL Server提供了强大的扩展能力,突破了T-SQL的限制,极大地拓展了SQL 的应用场景,如:复杂字符串处理、高性能计算、图像处理、机器学习集成、自定义加密解密等,使开发人员能够利用 .NET Framework的丰富功能来处理复杂的数据库任务。
|
4月前
|
SQL
开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql
开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql
66 1
SQL部分字段编码设置技巧与方法
在SQL数据库管理中,设置字段的编码对于确保数据的正确存储和检索至关重要
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
67 4
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等