Como renomear um banco de dados em uma instância do Amazon RDS do SQL Server?

7

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.

  1. As operações de exportação e importação de um bacpac podem demorar muito tempo.
  2. Quaisquer aplicativos ou sites que executam gravações no banco de dados precisarão para ficar offline durante todo o processo.
  3. Existem etapas manuais envolvidas que podem resultar em erros.
  4. A instância do RDS precisará ser grande o suficiente para hospedar duas cópias do banco de dados, se você quiser deixar o original como uma estratégia de reversão até que o novo esteja disponível.

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.

    
por Scott Munro 15.11.2013 / 13:16

3 respostas

6

O RDS adicionou recentemente um procedimento armazenado para realizar isso:

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

Fonte: link

    
por 11.04.2016 / 22:12
1

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 .

    
por 18.11.2013 / 10:29
1
  1. Conecte-se ao servidor MSSQL do RDS
  2. Abra a janela Nova consulta como mestre.
  3. Copie e cole a consulta abaixo.

EXEC rdsadmin.dbo.rds_modify_db_name N'OLD Database name', N'New Database Name' GO

  1. Altere o 'Nome do banco de dados antigo' como nome do banco de dados existente.
  2. Altere o 'Novo nome do banco de dados' como um nome que você deseja fornecer ao banco de dados.

Fonte: link

    
por 05.10.2017 / 16:14