se puede hacer un par de cosas si desea eliminar parte de su tabla y no TRUNCATE
.
podría seleccionar una parte de la mesa en una nueva tabla, a continuación, cambiar los dos, así:
SELECT *
INTO tmp_MyTable
FROM MyTable
WHERE Key='Value'
IF @@ROWCOUNT > 0
BEGIN
EXEC sp_rename MyTable, old_MyTable, NULL
EXEC sp_rename tmp_MyTable, MyTable, NULL
TRUNCATE old_MyTable
END
En segundo lugar, si usted está utilizando el particionado, puede crear una tabla idéntica (vacío) en el mismo esquema de partición ... y si la tabla está particionada de acuerdo con su lógica de archivado/depuración, puede mover un bloque de partición desde la tabla principal a la nueva tabla y luego truncar la nueva tabla. Por ejemplo:
ALTER TABLE MyTable
SWITCH PARTITION 15 TO purge_MyTable PARTITION 2
GO;
TRUNCATE TABLE purge_MyTable
Ps. Las particiones están disponibles en SQL 2005/08 Ent.
Espero que esto ayude!
gracias por su gbn solución. –
Y si se trata de muchas transacciones, según el modelo de copia de seguridad y el tamaño de registro, haga más copias de seguridad de registros para liberar espacio en el registro ... –
La retención de datos en tablas temporales le hará pagar más memoria. –