Partilhar via


Reduzir um banco de dados

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Este artigo descreve como reduzir um banco de dados no SQL Server usando o Pesquisador de Objetos no SQL Server Management Studio ou Transact-SQL.

A redução de arquivos de dados recupera espaço movendo páginas de dados do final do arquivo para o espaço desocupado mais perto da frente do arquivo. Quando é criado espaço livre suficiente no final do ficheiro, as páginas de dados no final do ficheiro podem ser desalocadas e devolvidas ao sistema de ficheiros.

Advertência

  • Os dados que são movidos para reduzir um arquivo podem ser espalhados para qualquer local disponível no arquivo. Isso causa fragmentação do índice e pode diminuir o desempenho de consultas que pesquisam um intervalo do índice. Para eliminar a fragmentação, considere reconstruir os índices no arquivo após a redução.
  • As operações de encolhimento não devem ser consideradas um procedimento de manutenção regular. Os arquivos de dados e de log que crescem devido a operações comerciais regulares e recorrentes não exigem operações de redução.

Limitações

  • O banco de dados não pode ser menor do que o tamanho mínimo do banco de dados. O tamanho mínimo é o tamanho especificado quando o banco de dados foi originalmente criado ou o último tamanho explícito definido usando uma operação de alteração de tamanho de arquivo, como DBCC SHRINKFILE. Por exemplo, se um banco de dados foi originalmente criado com um tamanho de 10 MB e cresceu para 100 MB, o menor tamanho para o qual o banco de dados pode ser reduzido é 10 MB, mesmo que todos os dados no banco de dados tenham sido excluídos.

  • Não é possível reduzir um banco de dados enquanto o backup do banco de dados está sendo feito. Por outro lado, não é possível fazer backup de um banco de dados enquanto uma operação de redução no banco de dados está em processo.

Recomendações

  • Para exibir a quantidade atual de espaço livre (não alocado) no banco de dados. Para obter mais informações, consulte Apresentar dados e informações de espaço de registo para uma base de dados

  • Considere as seguintes informações ao planejar reduzir um banco de dados:

    • Uma operação de redução é mais eficaz após uma operação que cria uma grande quantidade de espaço de armazenamento não utilizado, como uma instrução DELETE grande, uma operação TRUNCATE TABLE ou uma operação de eliminação de tabela.

    • 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 cresce novamente, isso indica que o espaço livre é necessário para operações regulares. Nesses casos, reduzir repetidamente o banco de dados é uma operação desperdiçada. Os eventos de crescimento automático necessários para aumentar o(s) arquivo(s) de banco de dados prejudicam o desempenho.

    • 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 em um grau. Esta é outra razão para não reduzir repetidamente o banco de dados.

    • A menos que você tenha um requisito específico, não defina a AUTO_SHRINK opção de banco de dados como ON.

Permissões

Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.

Comentários

As operações de redução em andamento podem bloquear outras consultas no banco de dados e podem ser bloqueadas por consultas já em andamento. Introduzidas no SQL Server 2022 (16.x), as operações de redução de banco de dados têm uma WAIT_AT_LOW_PRIORITY opção. Este recurso é uma nova opção adicional para DBCC SHRINKDATABASE e DBCC SHRINKFILE. Se uma nova operação de redução no modo WAIT_AT_LOW_PRIORITY não conseguir obter os bloqueios necessários devido a uma consulta de longa duração já em progresso, a operação de redução acabará por expirar após um minuto e sairá silenciosamente, prevenindo o bloqueio de outras consultas. Para obter mais informações, consulte DBCC SHRINKDATABASE.

Para obter informações sobre gerenciamento de arquivos e operações de redução específicas do Banco de Dados SQL do Azure, consulte Gerenciar espaço de arquivo para bancos de dados no Banco de Dados SQL do Azure.

Utilize o SQL Server Management Studio

se aplica a: SQL Server, Instância Gerenciada SQL do Azure

Reduzir um banco de dados

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda essa instância.

  2. Expanda Bases de Dadose, em seguida, clique com o botão direito do rato na base de dados que pretende reduzir.

  3. Aponte para Tarefas, aponte para Reduzire depois selecione Base de Dados.

    • da Base de Dados

      Exibe o nome do banco de dados selecionado.

    • Atual espaço alocado

      Exibe o espaço total usado e não utilizado para o banco de dados selecionado.

    • Espaço livre disponível

      Exibe a soma do espaço livre nos arquivos de log e de dados do banco de dados selecionado.

    • Reorganizar arquivos antes de liberar espaço não utilizado

      Selecionar esta opção equivale a executar DBCC SHRINKDATABASE especificando uma opção de percentagem de destino. Limpar esta opção é equivalente a executar DBCC SHRINKDATABASE com a opção TRUNCATEONLY. Por padrão, essa opção não é selecionada quando a caixa de diálogo é aberta. Se essa opção estiver selecionada, o usuário deverá especificar uma opção de porcentagem de destino.

    • Espaço livre máximo em arquivos após reduzir

      Insira a porcentagem máxima de espaço livre a ser deixada nos arquivos de banco de dados depois que o banco de dados tiver sido reduzido. Os valores admissíveis situam-se entre 0 e 99.

  4. Selecione OK.

Utilize o Transact-SQL

Reduzir um banco de dados

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Standard, selecione Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo usa DBCC SHRINKDATABASE (Transact-SQL) para diminuir o tamanho dos arquivos de dados e de log no UserDB banco de dados e permitir 10 por cento de espaço livre no banco de dados.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Depois de reduzir um banco de dados

Os dados que são movidos para reduzir um arquivo podem ser espalhados para qualquer local disponível no arquivo. Isso causa fragmentação do índice e pode diminuir o desempenho de consultas que pesquisam um intervalo do índice. Para eliminar a fragmentação, considere reconstruir os índices no arquivo após a redução. Para obter mais informações, consulte Reconstruir um índice.