2014-12-04 143 views
4

我试图通过将数据层应用程序(.bacpac文件)从Amazon RDS实例迁移到其他SQL Server数据库,但导入没有成功。所以现在我想删除数据库(里面是空的),当我尝试:AWS RDS SQL Server无法删除数据库

DROP DATABASE mydatabase; 

我得到的错误:

Cannot drop the database 'mydatabase', because it does not exist or you do not have permission

一些背景:

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

任何帮助,非常感谢!

回答

0

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

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服务器 - 需要数据库控制许可或更改任何数据库权限,或者在db_owner固定数据库角色的成员。

Azure SQL数据库 - 只有服务器级主体登录(由供应进程创建)或dbmanager数据库角色成员可以删除数据库。

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

1

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

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

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

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

+0

最重要的是,我发现我还需要通过AWS控制台重置主数据库密码。您可以将其设置为完全相同的密码,但只有在完成此操作后,重新命名才能进行。 – 2017-08-03 09:58:48