O RDS adicionou recentemente um procedimento armazenado para realizar isso:
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
Fonte: link
As tentativas, por meio do SQL Server Management Studio e do Transact SQL, de renomear um banco de dados hospedado em uma instância do Amazon RDS do SQL Server resultam no seguinte erro.
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.
Observe que esta é a instrução Transact SQL que eu tentei.
ALTER DATABASE <OldName> Modify Name = <NewName>;
A melhor opção que eu tenho até agora é restaurar uma cópia do banco de dados original com o novo nome e, em seguida, excluir o original. Veja minha postagem do StackOverflow para obter detalhes sobre como fazer isso.
Existem pelo menos as seguintes desvantagens nesta abordagem.
Alguém pode sugerir uma abordagem alternativa que não tenha essas desvantagens?
Atualização: Estou interessado em renomear um banco de dados do SQL Server hospedado em uma Instância do RDS, e não na Instância do RDS.
O RDS adicionou recentemente um procedimento armazenado para realizar isso:
EXEC rdsadmin.dbo.rds_modify_db_name N'<OldName>', N'<NewName>'
Fonte: link
A AWS forneceu as seguintes informações no caso que eu abri (parafraseada).
Embora o usuário mestre seja membro da função de banco de dados db_owner, uma renomeação do banco de dados requer uma alteração no sys.sysdbreg que está no banco de dados mestre. A associação na função db_owner não fornece essa permissão.
A solução que descrevi na minha pergunta é o método que eles recomendariam. Pedi a confirmação de que não há meios mais fáceis de copiar bancos de dados de e para o RDS do que o que descrevi em minha postagem do StackOverflow .
EXEC rdsadmin.dbo.rds_modify_db_name N'OLD Database name', N'New Database Name'
GO
Fonte: link
Tags sql-server amazon-rds