AWS RDS SQL Server无法删除数据库

edu*_*men 9 database sql-server amazon-web-services amazon-rds

我尝试通过导出数据层应用程序(.bacpac文件)从Amazon RDS实例迁移SQL Server数据库到其他实例,但导入未成功.所以现在我想删除数据库(这是空的),当我尝试:

DROP DATABASE mydatabase;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

一些背景:

  • 我尝试过使用SQL Server Management Studio,并选择紧密连接:同样的错误.
  • 我以主用户身份登录.
  • 我可以创建和删除其他数据库,但不是这个.
  • 我只是有这个数据库对这些有效权限:CONNECT,SHOWPLAN,VIEW DATABASE STATE,VIEW DEFINITION(不知道为什么还是这怎么可能).

任何帮助是极大的赞赏!

Kyl*_*ton 9

我遇到了同样的问题.尝试使用.bacpac通过SSMS还原数据库后,它会失败,并为您提供一个您似乎无权删除的数据库.

解决方法是使用rdsadmin重命名功能将其重命名为其他内容,然后似乎修复了权限问题并允许您删除它.

EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
Run Code Online (Sandbox Code Playgroud)

然后放下数据库.希望能帮助其他人处于同样的困境.

  • 最重要的是,我发现我还需要通过AWS控制台重置master数据库密码.您可以将其设置为完全相同的密码,但只有在执行此操作后,重命名才能正常工作. (6认同)
  • 重置主数据库密码为我解决了同样的问题,谢谢! (4认同)
  • 我不得不这样做几次,看来更改主密码就足够了(无需重命名数据库)。显然,当您更改密码时,它会更新所有数据库并将您的主用户分配给所有数据库。 (2认同)

Dap*_*Dan 9

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

我遇到了同样的问题,但就我而言,我的数据库处于离线模式。如果数据库处于离线模式,则不允许您使用 drop 命令删除它。首先,您应该通过运行此 sp 使数据库重新联机,然后执行 drop table 命令。

EXEC rdsadmin.dbo.rds_set_database_online databasename
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您的数据库位于多可用区部署中,则需要运行以下命令来删除这些数据库:

EXECUTE msdb.dbo.rds_drop_database N'DBName'
Run Code Online (Sandbox Code Playgroud)


use*_*728 1

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

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

权限

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

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

权限

SQL Server - 需要数据库的 CONTROL 权限,或 ALTER ANY DATABASE 权限,或 db_owner 固定数据库角色的成员身份。

Azure SQL 数据库- 只有服务器级主体登录名(由预配过程创建)或 dbmanager 数据库角色的成员才能删除数据库。

并行数据仓库- 需要数据库的 CONTROL 权限,或 ALTER ANY DATABASE 权限,或 db_owner 固定数据库角色的成员身份。