我尝试通过导出数据层应用程序(.bacpac
文件)将SQL Server数据库从Amazon RDS实例迁移到其他实例,但导入未成功。所以现在我想删除数据库(它是空的),当我尝试:
DROP DATABASE mydatabase;
我收到错误:
无法删除数据库'mydatabase',因为它不存在或 你没有许可
某些背景信息:
CONNECT
,SHOWPLAN
,VIEW DATABASE STATE
,VIEW DEFINITION
(不知道为什么或如何实现这一点)。< / LI>
非常感谢任何帮助!
答案 0 :(得分:8)
我遇到了同样的问题。尝试使用.bacpac通过SSMS恢复数据库后,它会失败,并为您提供一个您似乎无权删除的数据库。
一种解决方法,是使用rdsadmin重命名功能将其重命名为其他内容,然后似乎修复了权限问题并允许您删除它。
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
然后放弃数据库。希望帮助其他人处于同样的困境。
答案 1 :(得分: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 Server - 需要对数据库具有CONTROL权限,或者具有ALTER ANY DATABASE权限或db_owner固定数据库角色的成员身份。
Azure SQL数据库 - 只有服务器级主体登录(由配置过程创建)或dbmanager数据库角色的成员才能删除数据库。
并行数据仓库 - 需要对数据库具有CONTROL权限,或者具有ALTER ANY DATABASE权限或db_owner固定数据库角色的成员身份。
答案 2 :(得分:0)
这是旧线程的答案,但答案将有助于解决同一问题的人。
我遇到了同样的问题,但就我而言,我的数据库处于脱机模式。如果数据库处于脱机模式,则不允许您使用drop命令将其删除。首先,您应该通过运行此sp使数据库恢复在线,然后执行drop table命令。
EXEC rdsadmin.dbo.rds_set_database_online databasename
答案 3 :(得分:-1)
如果数据库处于多可用区部署中,则需要运行以下命令来删除这些数据库:
EXECUTE msdb.dbo.rds_drop_database N'DBName'