Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Relational Database Service/ Melhores práticas/ RDS for SQL Server/ Redução de um banco de dados do RDS for SQL Server
Atualizado em 2024-09-24 GMT+08:00

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:
    1. Encerre as transações que impedem o encolhimento.
    2. Encerre a operação de encolhimento. Todas as tarefas concluídas serão mantidas.
    3. 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

  1. 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.

  2. 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

  1. 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
  2. Execute o seguinte comando para reduzir todos os bancos de dados:

    EXEC [master].[dbo].[rds_shrink_database];