在RDS SQL Server实例中删除数据库时,会出现以下场景的报错:
drop database
SQL语句删除数据库会存在以下报错。
The database 'XX' is enabled for database mirroring. Database mirroring must be removed before you drop the database.
drop database
SQL语句删除数据库会存在以下报错。
The database 'XX' is currently joined to an availability group. Before you can drop the database, you need to remove it from the availability group.
drop database
SQL语句删除数据库会存在以下报错。
Cannot drop database "XX" because it is currently in use
高可用版数据库采用镜像或AlwaysOn搭建的高可用架构,删除数据库需要先移除镜像或AlwaysOn,然后才能删除数据库。如果数据库存在会话,则需要先使用kill
命令结束会话,然后才能删除数据。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
请根据现场实际版本,执行以下操作:
EXEC sp_rds_drop_database '[$Database]';
说明:
- [$Database]指的是需要删除的数据库名称。
- 上述命令会先移除高可用架构,并结束在该数据库上的会话连接,然后删除数据库。
kill
命令,结束会话,然后再执行删除操作。
Cannot drop database "XX" because it is currently in use
use master;
exec sp_who;
kill [$Spid];
说明:[$Spid]为上一步获取要删除数据库的会话的spid。
ALTER DATABASE [$Database] SET PARTNER OFF;然后执行以下SQL语句,删掉数据库。
drop database [$Database];
Cannot drop database "XX" because it is currently in use
报错,则执行以下SQL语句,直接移除镜像。
ALTER DATABASE [$Database] SET PARTNER OFF;然后执行以下SQL语句,删掉数据库。
drop database [$Database];
说明:适用于高可用版本。