No SQL Server, ao usar o Transact-SQL, reduzir o tamanho de um arquivo de dados requer uma sintaxe diferente para aumentá-lo. Para reduzir um tamanho de arquivo usando T-SQL, use o
DBCC SHRINKFILE
comando e forneça o nome do arquivo de dados junto com o tamanho para o qual você gostaria de reduzi-lo. Abaixo estão exemplos de redução do tamanho de arquivo de um arquivo de dados no SQL Server usando T-SQL.
Exemplo básico
Aqui está um exemplo básico de redução do tamanho de um arquivo de dados usando T-SQL:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2, 5); GO
Isso é provavelmente bastante auto-explicativo. Primeiro, mudamos para o banco de dados cujo arquivo de dados queremos alterar. Em seguida, usamos
DBCC SHRINKFILE
para especificar qual arquivo de dados e para qual tamanho de arquivo reduzi-lo. Isso está em MB, então nosso exemplo reduzirá para 5 MB. Reduza-o para o tamanho de arquivo padrão
Se você não especificar um tamanho de arquivo, o arquivo será reduzido ao tamanho padrão. O tamanho padrão é o tamanho especificado quando o arquivo foi criado.
Exemplo:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2); GO
Truncar o arquivo de dados
Você pode truncar o arquivo de dados usando o
TRUNCATEONLY
argumento. Aqui está um exemplo:
USE Solutions; GO DBCC SHRINKFILE ('Solutions', TRUNCATEONLY); GO
Esvaziar um arquivo de dados
Você também pode esvaziar um arquivo de dados usando o
EMPTYFILE
argumento. Exemplo:
DBCC SHRINKFILE (Solutions2, EMPTYFILE); GO
Isso migra todos os dados do arquivo especificado para outros arquivos no mesmo grupo de arquivos. Portanto, você precisará ter certeza de que este não é o único arquivo no grupo de arquivos (caso contrário, você receberá um erro). EmptyFile também garante que nenhum dado novo será adicionado ao arquivo.
Depois de esvaziar o arquivo, você pode removê-lo se é isso que deseja fazer. Aqui está um exemplo de remoção do arquivo esvaziado:
ALTER DATABASE Solutions REMOVE FILE Solutions2; GO
E podemos verificar se ele foi removido executando o seguinte:
USE Solutions; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO