Espaço que utiliza uma tabela não é completamente libertado depois de utilizar uma instrução DELETE para eliminar dados da tabela no SQL Server

Traduções de Artigos Traduções de Artigos
Artigo: 913399 - Ver produtos para os quais este artigo se aplica.
N.º de bugs: 219514 (SQL Server 8.0)
Expandir tudo | Reduzir tudo

Sintomas

Depois de utilizar uma instrução DELETE no Microsoft SQL Server para eliminar dados de uma tabela, poderá notar que o espaço que utiliza a tabela não é completamente libertado. Quando tenta inserir dados na base de dados, poderá receber a seguinte mensagem de erro:
Impossível atribuir espaço para o objecto ' TableName ' na base de dados ' DatabaseName ' porque filegroup 'PRIMARY' está cheio.
Nota TableName representa o nome da tabela. DatabaseName representa o nome da base de dados que contém a tabela.

Causa

Este problema ocorre porque o SQL Server apenas disponibiliza todas as páginas que uma tabela de pilha utiliza quando se verificam as seguintes condições:
  • Ocorre uma eliminação nesta tabela.
  • Um bloqueio de nível de tabela vai decorrer.
Nota Uma tabela de pilha é qualquer tabela que não está associada um índice agrupado.

Se páginas não são desatribuídas, outros objectos de base de dados não podem reutilizar as páginas.

No entanto, quando activa um nível de isolamento versões baseadas em linha na base de dados do SQL Server 2005, páginas não podem ser libertadas, mesmo que está a ser utilizado um bloqueio de nível de tabela. Para obter mais informações sobre níveis de isolamento versões baseadas em linha, consulte o tópico "Níveis de linha de utilizar versões baseadas em isolamento" no SQL Server 2005 Books Online.

Como contornar

Para contornar este problema, utilize um dos seguintes métodos:
  • Inclua uma sugestão TABLOCK na instrução DELETE se um nível de isolamento versões baseadas em linha não está activado. Por exemplo, utilize uma instrução é semelhante à seguinte:
    DELETE FROM <TableName> WITH (TABLOCK)
    Nota <TableName> representa o nome da tabela.
  • Utilize a instrução TRUNCATE TABLE se pretender eliminar todos os registos na tabela. Por exemplo, utilize uma instrução é semelhante à seguinte:
    TRUNCATE TABLE <TableName>
  • Crie um índice agrupado numa coluna da tabela. Para mais informações sobre como criar um índice agrupado numa tabela, consulte o tópico "Criar um índice agrupadas" no SQL Server Books Online.

Ponto Da Situação

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

Propriedades

Artigo: 913399 - Última revisão: 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 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
  • 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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