Supuse que después de cada operación de índice realizada por la forma "TODO" del comando, los datos del registro de transacciones se eliminarían antes de la próxima reconstrucción del índice. ¿Es así como funciona realmente, o las reconstrucciones de índice se registran como si fueran parte de una sola transacción?
1) Descarga de registros: el modelo de recuperación SIMPLE no borra el registro después de cada transacción, sino en los puntos de control. ( enlace para más información)
2a) REBUILD ALL: sí, REBUILD ALL funciona como una sola transacción. Las reconstrucciones de índice dentro tienen sus propias transacciones, pero la operación general no se confirma por completo hasta el final. Entonces, sí, puede limitar el crecimiento del archivo de registro reconstruyendo índices individuales (y posiblemente emitiendo comandos CHECKPOINT).
2b) ¡Prueba! Aquí, tenga un script de demostración. (Construido en 2016 dev) Primero, configure una base de datos de prueba, con tabla e índices:
USE master
GO
CREATE DATABASE Test_RebuildLog
GO
ALTER DATABASE Test_RebuildLog
SET RECOVERY SIMPLE
GO
USE Test_RebuildLog
GO
CREATE TABLE IndexTest
(ID int identity(1,1),
a char(1),
b char(1))
CREATE CLUSTERED INDEX CIX_IndexTest_ID ON IndexTest(ID)
CREATE INDEX IX_IndexTest_a ON IndexTest(a)
CREATE INDEX IX_IndexTest_b ON IndexTest(b)
INSERT IndexTest
(a,b)
VALUES ('a','b'),('z','y'),('s','r')
Ahora puede comparar la actividad de registro entre REBUILD ALL y reconstruir individualmente
CHECKPOINT
GO
ALTER INDEX ALL ON IndexTest REBUILD
SELECT *
FROM sys.fn_dblog(NULL,NULL)
WHERE Operation = 'LOP_COMMIT_XACT'
OR Operation = 'LOP_BEGIN_XACT'
GO
CHECKPOINT
GO
ALTER INDEX CIX_IndexTest_ID ON IndexTest REBUILD
ALTER INDEX IX_IndexTest_a ON IndexTest REBUILD
ALTER INDEX IX_IndexTest_b ON IndexTest REBUILD
SELECT *
FROM sys.fn_dblog(NULL,NULL)
WHERE Operation = 'LOP_COMMIT_XACT'
OR Operation = 'LOP_BEGIN_XACT'
GO
Observe cómo la primera transacción abierta (ID de transacción 0000: 000002fa para mí) no se confirma hasta el final de REBUILD ALL, pero para las reconstrucciones de índice por índice, se confirman sucesivamente.