Reduzir um ficheiro
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Este artigo descreve como reduzir um arquivo de dados ou de log no SQL Server usando o SQL Server Management Studio ou o 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.
Limitações
- O arquivo de dados primário não pode ser menor do que o tamanho do arquivo primário no banco de dados
model
.
Recomendações
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 tabela truncada ou uma operação de tabela suspensa.
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 arquivo de 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 arquivo de banco de dados é uma operação desperdiçada. Os eventos de crescimento automático necessários para aumentar o arquivo de banco de dados prejudicam o desempenho.
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.
A menos que você tenha um requisito específico, não defina a opção AUTO_SHRINK banco de dados 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 arquivos têm a opção WAIT_AT_LOW_PRIORITY. 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 puder obter os bloqueios necessários devido a uma consulta de longa execução já em andamento, a operação de redução acabará expirando após um minuto e sairá silenciosamente, impedindo que outras consultas sejam bloqueadas. WAIT_AT_LOW_PRIORITY aplica-se aos arquivos de dados (.mdf & .ndf). Ele não se aplica a arquivos de log de transações. Para obter mais informações, consulte DBCC SHRINKFILE.
Permissões
Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.
Usar o SQL Server Management Studio (SSMS)
Reduzir um arquivo de dados ou de log usando o SSMS
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda essa instância.
Expanda Bancos de Dados e clique com o botão direito do mouse no banco de dados que você deseja reduzir.
Aponte para Tarefas, aponte para Reduzire, em seguida, selecione Ficheiros.
Base de Dados
Exibe o nome do banco de dados selecionado.Tipo de ficheiro
Selecione o tipo de arquivo para o arquivo. As opções disponíveis são ficheiros de dados e ficheiros de log. A seleção padrão é Data. A seleção de um tipo de grupo de arquivos diferente altera as seleções nos outros campos de acordo.Grupo de ficheiros
Selecione um grupo de ficheiros a partir da lista de grupos de ficheiros associados ao tipo de ficheiro selecionado acima. A seleção de um grupo de arquivos diferente altera as seleções nos outros campos de acordo.Nome do ficheiro
Selecione um arquivo na lista de arquivos disponíveis do grupo de arquivos selecionado e do tipo de arquivo.Localização
Exibe o caminho completo para o arquivo selecionado no momento. O caminho não é editável, mas pode ser copiado para a área de transferência.Espaço atualmente alocado
Para arquivos de dados, exibe o espaço alocado atual. Para arquivos de log, exibe o espaço alocado atual calculado a partir da saída deDBCC SQLPERF(LOGSPACE)
.Espaço livre disponível
Para arquivos de dados, exibe o espaço livre disponível atual calculado a partir da saída deDBCC SHOWFILESTATS(fileid)
. Para arquivos de log, exibe o espaço livre disponível atual calculado a partir da saída deDBCC SQLPERF(LOGSPACE)
.Liberar espaço não utilizado
Faça com que qualquer espaço não utilizado nos arquivos seja liberado para o sistema operacional e reduza o arquivo até a última extensão alocada, reduzindo o tamanho do arquivo sem mover nenhum dado. Nenhuma tentativa é feita para realocar linhas para páginas não alocadas.Reorganizar páginas antes de liberar espaço não utilizado
Equivalente a executarDBCC SHRINKFILE
ao especificar o tamanho do ficheiro de destino. Quando essa opção é selecionada, o usuário deve especificar um tamanho de arquivo de destino na caixa Reduzir arquivo para.Reduzir arquivo para
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 atual ou mais do que o total de extensões alocadas ao arquivo. A inserção de um valor além do mínimo ou máximo será revertida para o mínimo ou o máximo quando o foco for alterado ou quando qualquer um dos botões na barra de ferramentas for selecionado.Arquivo vazio migrando os dados para outros arquivos no mesmo grupo de arquivos
Migre todos os dados do arquivo especificado. Essa opção permite que o arquivo seja descartado usando a instrução ALTER DATABASE. Esta opção é equivalente a executarDBCC SHRINKFILE
com a opçãoEMPTYFILE
.EMPTYFILE
não é suportado na Base de Dados SQL do Azure ou na Hiperescala da Base 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 utilizado no arquivo seja liberado para o sistema operacional e reduz o arquivo até a última extensão alocada. Isso reduz o tamanho do arquivo sem mover dados.
Opcionalmente, marque a caixa de seleção Reorganizar arquivos antes de liberar espaço não utilizado . Se essa opção for selecionada, a Reduzir arquivo para valor deverá ser especificada. Por predefinição, a opção está desmarcada.
Selecionar essa opção faz com que qualquer espaço não utilizado no arquivo seja liberado para o sistema operacional e tenta realocar linhas para páginas não alocadas.
Opcionalmente, insira a porcentagem máxima de espaço livre a ser deixada no arquivo de banco de dados depois que o banco de dados tiver sido reduzido. Os valores admissíveis situam-se entre 0 e 99. Esta opção só está disponível quando Reorganizar ficheiros antes de libertar espaço não utilizado está ativado.
Opcionalmente, marque a caixa de seleção Arquivo Vazio, 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 ser excluído. Esta opção é a mesma que executar
DBCC SHRINKFILE
com a opção EMPTYFILE.Selecione OK.
Use 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 chamado
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 de banco de dados e grupos de arquivos
- sys.databases (Transact-SQL)
- sys.database_files (Transact-SQL)
- FILE_ID (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- excluir dados ou arquivos de log de um banco de dados
- Reduzir um banco de dados