Reduzir um arquivo
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Este artigo descreve como reduzir um arquivo de log ou de dados no SQL Server usando o SQL Server Management Studio ou 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
- O arquivo de dados principal não pode ser menor que o arquivo principal no banco de dados
model
.
Recomendações
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 arquivo de banco de dados repetidamente e perceber que ele aumentou novamente, isso indica a necessidade de espaço livre para as operações regulares. Nesses casos, reduzir repetidamente um banco de dados é uma operação inútil. Os eventos de crescimento automático necessários para aumentar o arquivo de banco de dados prejudicam o desempenho.
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.
A menos que você tenha um requisito específico, não defina a opção de banco de dados AUTO_SHRINK como ON.
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 arquivo têm uma opção 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. WAIT_AT_LOW_PRIORITY se aplica a arquivos de dados (.mdf e .ndf). Ele não se aplica a arquivos de log de transações. Para obter mais informações, confira DBCC SHRINKFILE.
Permissões
Exige associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner .
Usar SSMS (SQL Server Management Studio)
Reduzir um arquivo de dados ou de log usando SSMS
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda-a.
Expanda Bancos de Dados e clique com o botão direito do mouse no banco de dados que deseja reduzir.
Aponte para Tarefas, depois para Reduzir e selecione Arquivos.
Backup de banco de dados
Exibe o nome do banco de dados selecionado.Tipo de arquivo
Seleciona o tipo de arquivo para o arquivo. As escolhas disponíveis são arquivos de Dados e de Log . A seleção padrão é Dados. Selecionar um tipo diferente de grupo de arquivos altera as seleções nos outros campos de acordo o tipo selecionado.Grupo de arquivos
Selecione um grupo de arquivos da lista de grupos de arquivos associado com o Tipo de arquivo selecionado acima. Selecionar um grupo de arquivos diferente altera as seleções nos outros campos de acordo o grupo selecionado.Nome do arquivo
Selecione um arquivo da lista de arquivos disponíveis do grupo de arquivos e tipo de arquivos selecionados.Localidade
Exibe o caminho completo para o arquivo atualmente selecionado. O caminho não é editável, mas pode ser copiado para a área de transferência.Espaço alocado no momento
Para arquivos de dados, exibe o espaço alocado no momento. Para arquivos de log, exibe o espaço alocado no momento computado da saída deDBCC SQLPERF(LOGSPACE)
.Espaço livre disponível
Para arquivos de dados, exibe o espaço livre disponível no momento computado da saída deDBCC SHOWFILESTATS(fileid)
. Para arquivos de log, exibe o espaço livre disponível no momento computado da saída deDBCC SQLPERF(LOGSPACE)
.Liberar espaço não utilizado
Faz com que qualquer espaço não utilizado nos arquivos seja liberado para o sistema operacional e reduz o arquivo para a última extensão alocada, reduzindo o tamanho do arquivo sem mover nenhum dado. Não é feita nenhuma tentativa para realocar linhas em páginas não alocadas.Reorganizar páginas antes de liberar espaço não utilizado
Equivale a executarDBCC SHRINKFILE
especificando o tamanho do arquivo de destino. Quando essa opção é selecionada, o usuário deve especificar um tamanho de arquivo de destino na Reduzir arquivo a .Reduzir arquivo a
Especifica o tamanho do arquivo de destino para a operação de redução. O tamanho não pode ser menor do que o espaço alocado no momento nem mais do que a extensão total alocada para o arquivo. Digitar um valor abaixo do mínimo ou além do máximo fará com que ele reverta ao mínimo ou ao máximo assim que o foco for alterado ou quando você selecionar qualquer botão da barra de ferramentas.Esvaziar o arquivo migrando os dados para outros arquivos do mesmo grupo
Migra todos os dados do arquivo especificado. Essa opção permite descartar o arquivo usando a instrução ALTER DATABASE. Essa opção é equivalente a executarDBCC SHRINKFILE
com a opçãoEMPTYFILE
. Não há suporte aEMPTYFILE
no Banco de Dados SQL do Azure ou na Hiperescala do Banco de Dados SQL do Azure.Selecione o tipo e o nome do arquivo.
Opcionalmente, marque a caixa de seleção Liberar espaço não utilizado .
Selecionar essa opção faz com que qualquer espaço não usado no arquivo seja liberado para o sistema operacional e reduz o arquivo à última extensão alocada. Isso reduz o tamanho do arquivo sem mover quaisquer dados.
Opcionalmente, marque a caixa de seleção Reorganizar arquivos antes de liberar o espaço não utilizado . Se isso for selecionado, o valor Reduzir arquivo para deve ser especificado. Por padrão, a opção fica desmarcada.
Selecionar essa opção faz com que qualquer espaço não usado no arquivo seja liberado para o sistema operacional e tenta realocar linhas a páginas não alocadas.
Opcionalmente, insira a porcentagem máxima de espaço livre a ser deixado no arquivo de banco de dados após o banco de dados ter sido reduzido. Os valores permitidos estão entre 0 e 99. Essa opção só está disponível quando Reorganizar arquivos antes de liberar o espaço não utilizado estiver habilitada.
Opcionalmente, marque a caixa de seleção Esvaziar arquivo migrando os dados para outros arquivos no mesmo grupo de arquivos .
Selecionar essa opção move todos os dados do arquivo especificado para outros arquivos no grupo de arquivos. O arquivo vazio pode, então, ser excluído. Essa opção é igual a executar
DBCC SHRINKFILE
com a opção EMPTYFILE.Selecione OK.
Usar o Transact-SQL
Reduzir um arquivo de dados ou de log usando Transact-SQL
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 SHRINKFILE para reduzir o tamanho de um arquivo de dados denominado
DataFile1
no banco de dadosUserDB
para 7 MB.
USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO
Conteúdo relacionado
- 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)
- FILE_ID (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- Excluir arquivos de dados ou de log de um banco de dados
- Reduzir um banco de dados