Error #: 219514 (SQL Server 8,0)
Síntomas
Después de usar una instrucción DELETE en Microsoft SQL Server para eliminar datos de una tabla, es posible que observe que el espacio que usa la tabla no se ha soltado por completo. Cuando intente insertar datos en la base de datos, es posible que reciba el siguiente mensaje de error:
No se pudo asignar espacio para el objeto 'TableName' de la base de datos 'DatabaseName' porque el grupo de archivos ' principal ' está lleno.
Nota TableName representa el nombre de la tabla. NombreDeBaseDeDatos representa el nombre de la base de datos que contiene la tabla.Causa
Este problema se produce porque SQL Server solo libera todas las páginas que usa una tabla de montones cuando se cumplen las condiciones siguientes:
- Se produce una eliminación en esta tabla.
- Se mantiene un bloqueo de nivel de tabla.
Solución alternativa
Como solución alternativa para este problema, utilice uno de los métodos siguientes:
- Incluya una sugerencia TABLOCK en la instrucción DELETE si el nivel de aislamiento basado en versiones de fila no está habilitado. Por ejemplo, use una instrucción similar a la siguiente:Nota<TableName> representa el nombre de la tabla.
DELETE FROM <TableName> WITH (TABLOCK)
- Use la instrucción TRUNCAte TABLE si desea eliminar todos los registros de la tabla. Por ejemplo, use una instrucción similar a la siguiente:
TRUNCATE TABLE <TableName>
- Crear un índice agrupado en una columna de la tabla. Para obtener más información acerca de cómo crear un índice agrupado en una tabla, consulte el tema "crear un índice agrupado" en los libros en línea de SQL Server.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".