Espaço que usa uma tabela não é liberado completamente depois que você usa uma instrução DELETE para excluir dados da tabela no SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 913399 - Exibir os produtos aos quais esse artigo se aplica.
Bug #: 219514 (SQL Server 8.0)
Expandir tudo | Recolher tudo

Sintomas

Depois de usar uma instrução DELETE para excluir dados de uma tabela no Microsoft SQL Server, você pode perceber que o espaço que usa a tabela não é liberado completamente. Quando você tenta inserir dados no banco de dados, você receberá a seguinte mensagem de erro:
Não pôde alocar espaço para o objeto ' TableName ' no banco de dados ' DatabaseName ' porque o grupo de arquivos 'PRIMARY' está cheio.
Observação TableName representa o nome da tabela. DatabaseName representa o nome do banco de dados que contém a tabela.

Causa

Esse problema ocorre porque o SQL Server somente libera todas as páginas que uma tabela de heap usa quando as seguintes condições forem verdadeiras:
  • Ocorre uma exclusão nessa tabela.
  • Um bloqueio de nível de tabela está sendo mantido.
Observação Uma tabela de heap é qualquer tabela que não está associada com um índice de cluster.

Se páginas não são desalocadas, outros objetos no banco de dados não podem reutilizar as páginas.

No entanto, quando você ativar um nível de isolamento com base no controle de versão de linha em um banco de dados SQL Server 2005, páginas não podem ser liberadas mesmo se um bloqueio de nível de tabela está sendo mantido. Para obter mais informações sobre níveis de isolamento com base no controle de versão de linha, consulte o tópico "Níveis de isolamento de com base em versão de linha usando" nos manuais online do SQL Server 2005.

Como Contornar

Para contornar este problema, use um dos seguintes métodos:
  • Inclua uma dica TABLOCK na instrução DELETE se um nível de isolamento com base no controle de versão de linha não está habilitado. Por exemplo, utilizar uma instrução semelhante à seguinte:
    DELETE FROM <TableName> WITH (TABLOCK)
    Observação <TableName> representa o nome da tabela.
  • Use a instrução TRUNCATE TABLE se você deseja excluir todos os registros na tabela. Por exemplo, utilizar uma instrução semelhante à seguinte:
    TRUNCATE TABLE <TableName>
  • Criar um índice em cluster em uma coluna da tabela. Para obter mais informações sobre como criar um índice de cluster em uma tabela, consulte o tópico "Criando um índice agrupado" nos manuais online do SQL Server.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Propriedades

ID do artigo: 913399 - Última revisão: sexta-feira, 2 de novembro de 2007 - Revisão: 1.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbexpertiseadvanced kbprb KB913399 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 913399

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com