Redução de um banco de dados do RDS for SQL Server
Cenários
Você pode usar um procedimento armazenado para reduzir o tamanho dos arquivos de dados e log em um banco de dados especificado do RDS for SQL Server.
Pré-requisitos
Uma instância de BD do RDS for SQL Server foi conectada. Conecte-se à instância de BD por meio do cliente do Microsoft SQL Server. Para obter detalhes, consulte Conexão a uma instância de BD por meio de uma rede pública.
Restrições
- O banco de dados pode ser reduzido somente quando o tamanho do arquivo do banco de dados exceder 50 MB. Caso contrário, a seguinte mensagem será exibida:
- Transações executadas no nível de isolamento baseado em controle de versão de linha podem impedir operações de redução. Para resolver este problema, execute os seguintes passos:
- Encerre as transações que impedem o encolhimento.
- Encerre a operação de encolhimento. Todas as tarefas concluídas serão mantidas.
- Não realize nenhuma operação e aguarde até que as transações de bloqueio sejam concluídas.
Práticas recomendadas
Quando você planeja reduzir um banco de dados, considere o seguinte:
- Uma operação de redução é mais eficaz após uma operação que cria muito espaço não utilizado, como uma reinicialização do banco de dados.
- A maioria dos bancos de dados requer algum espaço livre para estar disponível para operações regulares do dia-a-dia. Se você reduzir um banco de dados repetidamente e notar que o tamanho do banco de dados aumenta novamente, isso indica que o espaço que foi reduzido é necessário para operações regulares. Nesses casos, a redução repetida do banco de dados é uma operação desperdiçada.
- Uma operação de redução não preserva o estado de fragmentação dos índices no banco de dados e geralmente aumenta a fragmentação até certo ponto. Esse é outro motivo para não reduzir repetidamente o banco de dados.
Procedimento
- Execute o seguinte comando para reduzir um banco de dados:
EXEC [master].[dbo].[rds_shrink_database] @DBName='myDbName';
Tabela 1 Descrição do parâmetro Parâmetro
Descrição
myDbName
Nome do banco de dados a ser reduzido. Se este parâmetro não for especificado, todos os bancos de dados são reduzidos por padrão.
A figura a seguir mostra o conjunto de resultado da execução. Cada resultado corresponde às informações sobre cada arquivo no banco de dados especificado (ou todos os bancos de dados).
Figura 1 Conjunto de resultados
Tabela 2 Descrição do parâmetro do conjunto de resultados Nome da coluna
Descrição
DbId
ID do banco de dados do arquivo de redução atual.
FileId
ID do arquivo do arquivo de encolhimento atual.
CurrentSize
Número de páginas de 8 KB ocupadas pelo arquivo.
MinimumSize
Número mínimo de páginas de 8 KB ocupadas pelo arquivo. O valor indica o tamanho mínimo ou o tamanho inicial do arquivo.
UsedPages
Número de páginas de 8 KB usadas pelo arquivo.
EstimatedPages
Número de páginas de 8 KB que o mecanismo de banco de dados estima que o arquivo pode ser reduzido.
- Depois que o comando é executado com sucesso, as seguintes informações são exibidas:
HW_RDS_Process_Successful: Shrink Database Done.
Retificação de falhas
Se o tamanho do arquivo não mudar depois que o banco de dados é reduzido, execute a seguinte instrução SQL para verificar se o arquivo tem espaço suficiente disponível:
SELECT name, size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB FROM sys.database_files;
Exemplo
- Execute o seguinte comando para reduzir o banco de dados dbtest2:
EXEC [master].[dbo].[rds_shrink_database] @DBName = 'dbtest2';
A saída do comando é a seguinte.
Figura 2 Resultado da execução
- Execute o seguinte comando para reduzir todos os bancos de dados: