fix(bd): V023 idempotent guard for SYSTEM_VERSIONING OFF (PRC-001)
Wrap 'ALTER TABLE ... SET SYSTEM_VERSIONING = OFF' in temporal_type=2 check. Without this guard, re-running V023 on a DB where a previous partial run already turned SYSTEM_VERSIONING OFF fails with: 'SYSTEM_VERSIONING is not turned ON for table...' Found while applying on SIGCM2 dev after a prior interrupted run. Now truly idempotent: safe to re-run in any state (fully applied, never applied, or partially applied with SYSTEM_VERSIONING already OFF).
This commit is contained in:
@@ -38,9 +38,17 @@ IF EXISTS (SELECT 1 FROM sys.tables WHERE name = 'ChargeableCharConfig' AND sche
|
||||
BEGIN
|
||||
PRINT 'V023: MedioId column found — proceeding with refactor.';
|
||||
|
||||
-- ─── 1. Turn OFF SYSTEM_VERSIONING ─────────────────────────────────
|
||||
-- ─── 1. Turn OFF SYSTEM_VERSIONING (idempotent — skip if already OFF) ───
|
||||
IF EXISTS (SELECT 1 FROM sys.tables
|
||||
WHERE name = 'ChargeableCharConfig'
|
||||
AND schema_id = SCHEMA_ID('dbo')
|
||||
AND temporal_type = 2) -- 2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
|
||||
BEGIN
|
||||
ALTER TABLE dbo.ChargeableCharConfig SET (SYSTEM_VERSIONING = OFF);
|
||||
PRINT 'V023: SYSTEM_VERSIONING = OFF.';
|
||||
END
|
||||
ELSE
|
||||
PRINT 'V023: SYSTEM_VERSIONING already OFF — skipping.';
|
||||
|
||||
-- ─── 2. Drop indexes that reference MedioId ────────────────────────
|
||||
IF EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'UX_ChargeableCharConfig_Vigente'
|
||||
|
||||
Reference in New Issue
Block a user