La nueva versión de SQL Sever 2022 nos ha traído varias novedades.
Una de ellas es la posibilidad de como ya teníamos con los índices ahora hacerlo con la creación de constraint y poder utilizar el modo Resumible el cual permite ante un tiempo determinado poner en pausa la creación para luego poder continuar desde ese mismo punto de avance.
En el siguiente video te muestro una demostración de esta nueva funcionalidad y acá en este post te comparto los script
Pasos para la demo
- Descargar y atachar la base de datos StackOverflow2010
- Correr el siguiente script para crear una nueva tabla post
USE STACKOVERFLOW2010
GO
DROP TABLE IF EXISTS POST_2
SELECT IDENTITY(BIGINT, 1,1) AS ID_NUM,
*
INTO POST_2
FROM [DBO].[POSTS]
CROSS JOIN (SELECT TOP 2 COLUMN_ID FROM SYS.COLUMNS) AS C2
Crear una Constraint que si dura mas de 1 minuto quede en modo pause
ALTER TABLE POST_2
ADD CONSTRAINT PK_CONSTRAIN
PRIMARY KEY CLUSTERED (ID_NUM,CREATIONDATE,SCORE)
WITH (ONLINE = ON, MAXDOP = 1, RESUMABLE = ON, MAX_DURATION = 1);
Si se quiere analizar el estado de avance ejecutar la siguiente consulta
use StackOverflow2010
go
SELECT SQL_TEXT, STATE_DESC, PERCENT_COMPLETE
FROM SYS.INDEX_RESUMABLE_OPERATIONS;
Para continuar o abortar con la constraint correr el siguiente codigo segun corresponda
ALTER INDEX ALL ON POST_2 ABORT;
ALTER INDEX ALL ON POST_2 RESUME;