Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Gerencie bancos de dados usando comandos SQL

Última atualização: Jun 26, 2026

O ApsaraDB RDS for SQL Server restringe certas operações nativas do SQL Server para proteger a estabilidade da instância e a integridade do backup. Este documento aborda como criar, excluir e renomear bancos de dados usando T-SQL, explica quais operações ALTER DATABASE o RDS bloqueia e descreve as alternativas corretas para cada uma.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Uma instância do ApsaraDB RDS for SQL Server executando o SQL Server 2012 ou superior

Crie um banco de dados

Execute a seguinte instrução:

CREATE DATABASE TestDb
O RDS atribui automaticamente o caminho do arquivo de dados. Não especifique um caminho de arquivo na instrução.

Visualize os caminhos dos arquivos de dados e de log de todos os bancos de dados da instância:

SELECT db_name(database_id), physical_name
FROM sys.master_files;

Exclua um banco de dados

Aviso

Faça o backup do banco de dados antes de excluí-lo. Você só pode recuperar um banco de dados excluído a partir de um backup.

Execute a seguinte instrução:

DROP DATABASE [TestDb]

Se não houver backup no momento da exclusão, o RDS exibe uma mensagem informativa junto com a confirmação de sucesso:

DROP DATABASE [TestDb]
-------------------------------------------------------------------------------------------------
Kindly reminder:
    your database [TestDb] does not exist any backup set.
-------------------------------------------------------------------------------------------------
Login User [Test11] has dropped database [TestDb] .

Renomear um banco de dados

Use o procedimento armazenado sp_rds_modify_db_name para renomear um banco de dados. Contas padrão podem executar esse procedimento sem autorização adicional. Não use o comando nativo ALTER DATABASE ... MODIFY NAME nem a interface gráfica do SQL Server Management Studio (SSMS). Ambos falham com um erro de permissão, pois o RDS concede às contas apenas a permissão CREATE DATABASE no banco de dados master por padrão. Essa permissão é insuficiente para renomear o banco.

Edições de instância compatíveis:

  • Série Alta Disponibilidade (HA)

  • Cluster Edition

  • Série Básica

Sintaxe:

USE db
GO
EXEC sp_rds_modify_db_name 'db', 'new_db'
GO

Parâmetro

Descrição

Primeiro parâmetro

Nome original do banco de dados

Segundo parâmetro

Novo nome do banco de dados

Em instâncias da Série Alta Disponibilidade (HA) e da Cluster Edition, renomear um banco de dados aciona a reconstrução automática da configuração de replicação entre as instâncias primária e secundária. Durante esse processo, o RDS faz backup e restaura os dados do banco de dados. Se o banco de dados for grande, verifique se a instância tem armazenamento livre suficiente antes de renomeá-lo.

Restrições de modificação do banco de dados

Você pode modificar a maioria dos atributos de ALTER DATABASE. O RDS bloqueia as seguintes operações:

Mover um banco de dados para um caminho de arquivo diferente

Especificar um caminho de arquivo inválido em ALTER DATABASE ... MODIFY FILE retorna um erro:

ALTER DATABASE [TestDb] MODIFY FILE (NAME = N'TestDb', FILENAME = N'E:\KKKK\DDD\DATA\TestDb.mdf')
Msg 50000, Level 16, State 1, Procedure ******, Line 152
The file path [
E:\KKKK\DDD\DATA\TestDb.mdf ] is invalid, please specify correct path folder [ E:\mmm\gggg\ ].
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.

Alterar o modelo de recuperação para não-FULL

O RDS exige o modelo de recuperação FULL para manter a cadeia de logs para restaurações em um ponto no tempo. Tentar alterar para SIMPLE:

ALTER DATABASE [TestDb]  -- [TestDb] is the database name.
SET RECOVERY SIMPLE

O RDS bloqueia a alteração e redefine o modelo de recuperação para FULL:

Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.
Importante

Se o log de transações estiver cheio, a única opção para reduzi-lo é truncar a cadeia de logs. Se você precisar mudar o modelo de recuperação para SIMPLE em uma emergência — por exemplo, para truncar um log excessivamente grande — saiba que isso desconecta a cadeia de backups. Todas as tarefas de restauração em um ponto no tempo que incluam o momento da desconexão falharão. Após executar as instruções, você pode ignorar as mensagens de erro; isso desconectará a cadeia de logs e definirá o modelo como SIMPLE. Você é responsável pelas consequências.

Defina um banco de dados como ONLINE após OFFLINE

Executar ALTER DATABASE [TestDb] SET ONLINE diretamente após colocar um banco de dados como offline retorna:

Msg 5011, Level 14, State 9, Line 1
User does not have permission to alter database 'TestDb', the database does not exist, or the database is not in a state that allows access checks.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.

Em vez disso, use o procedimento armazenado sp_rds_set_db_online:

EXEC sp_rds_set_db_online 'TestDb'

Erros comuns

Erro ao modificar o nome de um banco de dados do RDS SQL Server com o comando SQL nativo ALTER DATABASE ou a interface gráfica do SSMS?

Descrição do problema

O uso de ALTER DATABASE ... MODIFY NAME retorna:

Msg 5011, Level 14, State 2, Line 4
User does not have permission to alter database 'jmdb01', the database does not exist, or the database is not in a state that allows access checks.

image

O uso da interface gráfica do SSMS retorna: unable to rename db_name.

image

Por padrão, todas as contas — incluindo contas padrão e privilegiadas — recebem apenas a permissão CREATE DATABASE no banco de dados master. Essa permissão não é suficiente para renomear um banco de dados.

Para entender o modelo de permissão completo, a tabela a seguir mostra as permissões de renomeação efetivas ao usar concessões no nível de SA. Não ative as permissões de SA. Em vez disso, use sp_rds_modify_db_name.

Permissão

Escopo de renomeação

CREATE DATABASE apenas no master

Não é possível renomear nenhum banco de dados

CREATE ANY DATABASE no nível da instância

Pode renomear bancos de dados de propriedade da conta (deve ser o proprietário do banco de dados, não apenas um membro da função db_owner)

ALTER ANY DATABASE no nível da instância

Pode renomear qualquer banco de dados no qual a conta tenha a permissão ALTER

Causa

  • Por padrão, as contas de usuário do ApsaraDB RDS for SQL Server, incluindo contas padrão e privilegiadas, recebem apenas a permissão CREATE DATABASE no banco de dados master. Essa permissão é insuficiente para renomear um banco de dados. Por isso, você não pode renomear diretamente um banco de dados usando SQL nativo ou a interface gráfica do SSMS.

  • (Não recomendado) Você pode ative as permissões de administrador do sistema (SA) para renomear um banco de dados. Em seguida, use uma conta com permissões de SA para conceder manualmente as permissões necessárias a uma conta padrão ou privilegiada. As permissões são descritas a seguir:

    • Uma conta que tem apenas a permissão CREATE DATABASE no banco de dados master não pode renomear nenhum banco de dados.

    • Uma conta com a permissão CREATE ANY DATABASE no nível da instância pode renomear os bancos de dados de sua propriedade. Nota: O usuário deve ser o proprietário do banco de dados, não apenas um membro da função db_owner. Para obter mais informações, consulte Modifique propriedades do banco de dados (informações avançadas: db_owner).

    • Uma conta com a permissão ALTER ANY DATABASE no nível da instância pode renomear qualquer banco de dados no qual tenha a permissão ALTER.

Solução

Use o procedimento armazenado sp_rds_modify_db_name fornecido pelo ApsaraDB RDS for SQL Server para renomear um banco de dados com segurança. Contas padrão podem executar esse procedimento sem autorização adicional.

Comando T-SQL

sp_rds_modify_db_name

Edições de instância compatíveis

edição básica, edição de alta disponibilidade e edição cluster

Descrição

Esse procedimento armazenado renomeia um banco de dados. Antes de executar esse procedimento, certifique-se de que a conta usada na conexão tenha as permissões necessárias no banco de dados de destino e de que o banco de dados esteja online.

Em instâncias da Série Alta Disponibilidade e da Cluster Edition, renomear um banco de dados reconstrói automaticamente a configuração de replicação. Esse processo envolve operações de backup e restauração. Se você estiver renomeando um banco de dados grande, monitore o armazenamento disponível na instância. Se o armazenamento for insuficiente, talvez seja necessário aumentar a capacidade.

Uso

USE master
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
  • O primeiro parâmetro é o nome original do banco de dados.

  • O segundo parâmetro é o novo nome do banco de dados.

Próximos passos