SQL托管实例禁用Service Broker报错:涉及镜像或可用性组
执行以下命令尝试禁用Service Broker:
ALTER database segenresourcedb SET DISABLE_BROKER with rollback immediate;
收到错误提示:
Msg 1468, Level 16, State 1, Line 11
The operation cannot be performed on database "SegenResourceDB" 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 or in an availability group.Msg 5069, Level 16, State 1, Line 11
ALTER DATABASE statement failed.
实例为标准层,已检查镜像相关表无数据,但错误依然存在,需成功禁用Service Broker。
验证数据库关联状态
先通过系统视图确认数据库是否真的属于可用性组或镜像会话:-- 检查数据库镜像及AG状态 SELECT name, mirroring_state_desc, is_in_availability_group FROM sys.databases WHERE name = 'SegenResourceDB'; -- 检查AG集群中的数据库关联 SELECT d.database_name, ag.name AS availability_group_name FROM sys.availability_databases_cluster d JOIN sys.availability_groups ag ON d.group_id = ag.group_id WHERE d.database_name = 'SegenResourceDB';若结果显示
is_in_availability_group为1,或在AG集群查询中存在记录,说明数据库确实关联了可用性组。移除可用性组关联
如果数据库属于某个可用性组,先执行移除操作:ALTER AVAILABILITY GROUP [你的可用性组名称] REMOVE DATABASE [SegenResourceDB];执行后再次运行第一步的查询,确认数据库已脱离AG。
重新执行禁用Service Broker命令
确认数据库无AG/镜像关联后,重新执行:ALTER DATABASE SegenResourceDB SET DISABLE_BROKER WITH ROLLBACK IMMEDIATE;处理残留元数据问题
若查询未发现关联但仍报错,尝试切换到单用户模式操作:ALTER DATABASE SegenResourceDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE SegenResourceDB SET DISABLE_BROKER; ALTER DATABASE SegenResourceDB SET MULTI_USER;
内容的提问来源于stack exchange,提问作者Anoop Agarwal

