Reduzir um banco de dados
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de 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 no Transact-SQL.
A redução de arquivos de dados recupera espaço com a movimentação de páginas de dados do final do arquivo para o espaço desocupado mais próximo à frente do arquivo. Quando espaço livre suficiente é criado no final do arquivo, as páginas de dados no final do arquivo podem ser desalocadas e retornadas para o sistema de arquivos.
Limitações e restrições
O banco de dados não pode se tornar menor do que o tamanho mínimo do banco de dados. O tamanho mínimo é aquele especificado na criação inicial do banco de dados ou o último tamanho explicitamente configurado por meio de uma operação de alteração de tamanho de arquivo, como
DBCC SHRINKFILE
. Por exemplo, se um banco de dados foi criado originalmente com um tamanho de 10 MB e atingir 100 MB, a menor redução desse banco de dados será de 10 MB, mesmo se todos os dados do banco de dados forem excluídos.Não é possível reduzir um banco de dados enquanto ele estiver sendo armazenado em backup. Da mesma forma, não é possível fazer backup de um banco de dados enquanto houver uma operação de redução em processamento.
Recomendações
Para visualizar a quantidade atual de espaço livre (não alocado) no banco de dados. Para obter mais informações, consulte Exibir dados e informações de espaço de log para um banco de dados
Considere as seguintes informações ao planejar reduzir um banco de dados:
Uma operação de redução é mais eficiente depois de uma operação que cria uma grande quantidade de espaço de armazenamento não utilizado, como uma grande instrução DELETE, truncar tabela ou uma operação de remover tabela.
A maioria dos bancos de dados exige algum espaço livre disponível para operações comuns rotineiras. Se você reduzir um banco de dados repetidamente e perceber que ele aumentou novamente, isso indicará a necessidade de espaço livre para as operações rotineiras. Nesse caso, reduzir repetidamente um banco de dados é uma operação inútil. Eventos de crescimento automático necessários para aumentar os arquivos de banco de dados prejudicam o desempenho.
Uma operação de redução não preserva o estado de fragmentação de índices do banco de dados e, em geral, aumenta o nível de fragmentação. Essa é outra razão para não reduzir o banco de dados repetidamente.
A menos que você tenha um requisito específico, não defina a opção de banco de dados AUTO_SHRINK como ON.
Permissões do
Exige 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 opção de WAIT_AT_LOW_PRIORITY. Esse recurso é uma nova opção adicional para DBCC SHRINKDATABASE
e DBCC SHRINKFILE
. Se uma nova operação de redução em modo WAIT_AT_LOW_PRIORITY não puder obter os bloqueios necessários devido a uma execução prolongada de consulta já em andamento, a operação de redução atingirá o tempo limite após um minuto e se encerrará silenciosamente, impedindo que outras consultas sejam bloqueadas. Para obter mais informações, confira DBCC SHRINKDATABASE (Transact-SQL).
Para obter informações sobre o gerenciamento de arquivos e reduzir as operações específicas do Banco de dados SQL do Azure, veja Gerenciar espaço de arquivos para bancos de dados no Banco de Dados SQL do Azure.
Usar o SQL Server Management Studio
Aplica-se a: SQL Server, Instância gerenciada de SQL do Azure
Reduzir um banco de dados
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e a expanda.
Expanda Bancos de Dadose clique com o botão direito do mouse no banco de dados que deseja reduzir.
Aponte para Tarefas, depois para Reduzir e selecione Banco de dados.
Backup de banco de dados
Exibe o nome do banco de dados selecionado.
Espaço alocado atual
Exibe o espaço total utilizado e não utilizado para o banco de dados selecionado.
Espaço livre disponível
Exibe a soma de espaço livre no log e nos arquivos de dados do banco de dados selecionado.
Reorganizar arquivos antes de liberar espaço não utilizado
Selecionar essa opção é equivalente a executar DBCC SHRINKDATABASE especificando uma opção de porcentagem de destino. Desmarcar esta opção é o mesmo que executar DBCC SHRINKDATABASE com a opção TRUNCATEONLY. Por padrão, essa opção não é selecionada quando a caixa de diálogo está aberta. Se esta opção for selecionada, o usuário deverá especificar uma opção de porcentagem de destino.
Máximo espaço livre em arquivos após a redução
Digite a porcentagem máxima de espaço livre a ser deixado nos arquivos de banco de dados após a redução do banco de dados. Os valores permitidos estão entre 0 e 99.
Selecione OK.
Usar o Transact-SQL
Reduzir um banco de dados
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo usa DBCC SHRINKDATABASE para diminuir o tamanho dos arquivos de dados e de log no banco de dados
UserDB
e liberar10
% de espaço livre no banco de dados.
DBCC SHRINKDATABASE (UserDB, 10);
GO
depois de reduzir um banco de dados
Os dados movidos para reduzir um arquivo podem ser espalhados para qualquer local disponível no arquivo. Isso provoca uma fragmentação do índice e pode reduzir a velocidade do desempenho de consultas que pesquisam um intervalo do índice. Para eliminar a fragmentação, considere a recompilação dos índices no arquivo após a redução. Para obter mais informações, confira Recompilar um índice.
Conteúdo relacionado
- Reduzir o banco de dados tempdb
- Considerações para as configurações de crescimento automático e redução automática no SQL Server
- Arquivos e grupos de arquivos do banco de dados
- sys.databases (Transact-SQL)
- sys.database_files (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- Excluir arquivos de dados ou de log de um banco de dados
- Reduzir um arquivo
- Gerenciar o espaço de arquivo para bancos de dados no Banco de Dados SQL do Azure