Espacio que utiliza una tabla no se libera completamente después de utilizar una instrucción DELETE para eliminar datos de la tabla en SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 913399 - Ver los productos a los que se aplica este artículo
Nº de error: 219514 (SQL Server 8.0)
Expandir todo | Contraer todo

Síntomas

Después de utilizar una instrucción DELETE para eliminar datos de una tabla en Microsoft SQL Server, puede observar que el espacio que utiliza la tabla no se ha liberado completamente. Cuando intenta insertar datos en la base de datos, puede recibir el mensaje de error siguiente:
No se pudo asignar espacio para objeto 'Nombre de tabla' en la base de datos 'DatabaseName' porque es el grupo de archivos 'PRIMARY' completa.
NotaNombre de tabla representa el nombre de la tabla. DatabaseName representa el nombre de la base de datos que contiene la tabla.

Causa

Este problema se produce debido a que SQL Server sólo publica todas las páginas que utiliza una tabla de montón cuando se cumplen las condiciones siguientes:
  • Se produce una eliminación en esta tabla.
  • Un nivel de tabla se encuentra el bloqueo.
Nota Una tabla de montón es cualquier tabla que no está asociado con un índice agrupado.

Si no se cancela la asignación de páginas, otros objetos de la base de datos no se puede reutilizar las páginas.

Sin embargo, cuando se habilita un nivel de aislamiento basado en el control de versiones de fila en una base de datos de SQL Server 2005, las páginas no se puede liberar incluso si se encuentra un bloqueo de tabla. Para obtener más información acerca de los niveles de aislamiento basado en el control de versiones de fila, vea el tema "Niveles de aislamiento basado en versiones de fila Using" en libros en pantalla de SQL Server 2005.

Solución

Para evitar este problema, utilice uno de los métodos siguientes:
  • Incluir una sugerencia TABLOCK en la instrucción DELETE, si una fila nivel de aislamiento basado en versiones no está habilitado. Por ejemplo, utilice una instrucción que es similar al siguiente:
    DELETE FROM <TableName> WITH (TABLOCK)
    Nota <TableName></TableName> representa el nombre de la tabla.
  • Utilice la instrucción TRUNCATE TABLE si desea eliminar todos los registros de la tabla. Por ejemplo, utilice una instrucción similar a la Después de:
    TRUNCATE TABLE <TableName>
  • Crear un índice agrupado en una columna de la tabla. Para obtener más información obtener información acerca de cómo crear un índice agrupado en una tabla, vea "crear tema de un índice agrupado"en libros en pantalla de SQL Server.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Se refiere a:".

Propiedades

Id. de artículo: 913399 - Última revisión: domingo, 10 de marzo de 2013 - Versión: 3.0
La información de este artículo se refiere 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 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palabras clave: 
kbexpertiseadvanced kbprb kbmt KB913399 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 913399

Enviar comentarios

 

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