尝试通过sql Server Management Studio和Transact sql重命名sql Server Amazon RDS实例上托管的数据库会导致以下错误.
User does not have permission to alter database ‘Morningstar’,the
database does not exist,or the database is not in a state that allows
access checks.
请注意,这是我尝试过的Transact sql语句.
ALTER DATABASE <OldName> Modify Name = <NewName>;
到目前为止,我提出的最佳选择是使用新名称恢复原始数据库的副本,然后删除原始数据库.有关如何执行此操作的详细信息,请参阅我的StackOverflow post.
这种方法至少存在以下缺点.
> bacpac的出口和进口操作可能需要很长时间.
>任何执行写入数据库的应用程序或网站都需要
在整个过程中脱机.
>涉及手动步骤可能导致错误.
>如果要将原始数据库作为回滚策略保留,直到新数据库可用,RDS实例将需要足够大以容纳数据库的两个副本.
任何人都可以建议一种没有这些缺点的替代方法吗?
解决方法
RDS最近添加了一个存储过程来完成此任务:
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>',N'<NewName>'