尝试通过SQL Server Management Studio和Transact SQL重命名SQL Server Amazon RDS实例上承载的数据库会导致以下错误。
用户没有更改数据库“晨星”的权限,数据库不存在,或数据库未处于允许访问检查的状态。
请注意,这是我尝试的Transact SQL语句。
ALTER DATABASE <OldName> Modify Name = <NewName>;
到目前为止,最好的select是用新名称恢复原始数据库的副本,然后删除原始数据库。 请参阅我的StackOverflow文章以了解如何执行此操作的详细信息。
这种方法至less有以下缺点。
任何人都可以build议一个替代方法,不具有这些缺点?
更新:我有兴趣重命名RDS实例中的SQL Server数据库 – 而不是RDS实例。
RDS最近添加了一个存储过程来完成这个任务:
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
来源: http : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.html#Appendix.SQLServer.CommonDBATasks.RenamingDB
AWS在我打开的情况下提供了以下信息(释义)。
虽然master用户是db_owner数据库angular色的成员,但数据库重命名需要在master数据库中的sys.sysdbreg中进行更改。 db_ownerangular色中的成员身份不提供此权限。
我在我的问题中描述的解决方法是他们会推荐的方法。 我已经要求确认没有比在我的StackOverflow文章中描述的方法复制数据库更简单的方法。
EXEC rdsadmin.dbo.rds_modify_db_name N'OLD Database name', N'New Database Name' GO
资料来源: http : //mytecksolution.blogspot.com/2017/09/rds-mssql-database-name-change-or-rename.html