AWS RDS SQL Server无法删除数据库。

13

我尝试通过导出数据层应用(.bacpac文件)的方式从Amazon RDS实例迁移SQL Server数据库到其他地方,但是导入失败了。现在我想删除这个数据库(它是空的),当我尝试删除时:

DROP DATABASE mydatabase;

我收到了以下错误:

无法删除数据库'mydatabase',因为它不存在或您没有权限

一些背景信息:

  • 我已经尝试使用SQL Server Management Studio,并选择关闭连接:仍然出现相同的错误。
  • 我以主用户身份登录。
  • 我可以创建和删除其他数据库,但不能删除这个。
  • 我只有在这个数据库上的以下有效权限:CONNECTSHOWPLANVIEW DATABASE STATEVIEW DEFINITION(不知道为什么或如何实现)。

非常感谢任何帮助!

6个回答

16

我遇到了相同的问题。尝试使用 .bacpac 通过 SSMS 还原数据库后,它会失败并留下一个您似乎没有删除权限的数据库。

解决方法是使用 rdsadmin 重命名函数将其重命名为其他名称,然后似乎可以解决权限问题并允许您将其删除。

EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'

那就直接删除数据库。希望这能帮助到其他遇到相同困境的人。


10
除了这个之外,我发现我还需要通过AWS控制台重置主数据库密码。你可以将其设置为完全相同的密码,但只有在这样做之后,重命名才会起作用。 - Kyle Whittington
3
我曾经不得不做过这个事情,看起来只需更改主密码就足够了(无需重命名数据库)。显然,当您更改密码时,它会更新所有数据库并将您的主用户分配给所有数据库。 - turtlechief
4
重置主数据库密码解决了我的同样问题,谢谢! - Indominus
我可以确认,截至2020年2月,需要进行密码重置才能获得执行此操作所需的权限。 - Phillippe Santana
遇到完全相同的问题后,通过AWS RDS控制台重置主密码后,我们能够成功删除数据库。需要补充的一点是,如果您正在使用RDS代理,它可能会与数据库建立连接,但是您可以在使用SSMS时勾选删除数据库的同时断开连接选项。 - Ben Wesson

12

这是回答一个旧线程的答案,但谁知道呢,它可能会帮助到遇到相同问题的人。

我遇到了同样的问题,但在我的情况下,我的数据库处于离线模式。如果数据库处于离线模式,它将不允许您使用drop命令删除它。首先,您应该通过运行此sp将数据库恢复在线状态,然后执行drop表命令。

EXEC rdsadmin.dbo.rds_set_database_online databasename

6

如果您的数据库在多AZ部署中,则需要运行此命令来删除这些数据库:

EXECUTE msdb.dbo.rds_drop_database N'DBName'

这种方法对我有效,但对于排名更高的那个不行。 - andrey.shedko

1
听起来你不是正确角色的成员。

https://msdn.microsoft.com/en-us/library/ee240822.aspx

权限

只有sysadmin或serveradmin固定服务器角色的成员,或数据库所有者才能删除DAC。名为sa的内置SQL Server系统管理员帐户也可以启动向导。

https://msdn.microsoft.com/en-us/library/ms178613.aspx

权限

SQL Server - 需要在数据库上具有 CONTROL 权限,或 ALTER ANY DATABASE 权限,或是 db_owner 固定数据库角色的成员。

Azure SQL Database - 只有服务器级别的主体登录(由配置过程创建)或 dbmanager 数据库角色的成员可以删除数据库。

Parallel Data Warehouse - 需要在数据库上具有 CONTROL 权限,或 ALTER ANY DATABASE 权限,或是 db_owner 固定数据库角色的成员。


0

我遇到了完全相同的问题,在通过 AWS RDS 控制台重置主密码后,我们能够使用主帐户删除数据库。 需要补充的一点是,如果您正在使用 RDS Proxy,则可能会连接到数据库,但是使用 SSMS 时,只需选择删除数据库时的断开连接选项即可。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接