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
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.
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?
Próximos passos
Gerencie bancos de dados usando o console: Crie um banco de dados e Exclua um banco de dados
Gerencie bancos de dados usando a API: CreateDatabase e DeleteDatabase
Altere a intercalação do conjunto de caracteres e o fuso horário: Altere a intercalação do conjunto de caracteres e o fuso horário; API: DescribeCollationTimeZones
Visualize e altere as propriedades do banco de dados, reduza os logs de transação ou atualize as estatísticas: Gerencie propriedades do banco de dados; API: ModifyDatabaseConfig

