354 lines
19 KiB
Transact-SQL
354 lines
19 KiB
Transact-SQL
/*
|
|
Rediseño aprobado: evento -> registros -> campos/relaciones.
|
|
Instalado el 20/09/2026 en SIG_PlataformaDesarolladores con autorización del usuario.
|
|
Instalación: aplicación detenida, respaldo verificado y UNA transacción del
|
|
instalador en UNA conexión para este archivo y Procedimientos_Bitacora_Eventos_20260920.sql.
|
|
El instalador debe detenerse ante cualquier error, revertir y no continuar lotes.
|
|
Ningún PA administra transacciones. No agrupar historia por fecha/usuario.
|
|
*/
|
|
SET NOCOUNT ON;
|
|
IF @@TRANCOUNT = 0
|
|
THROW 51000, 'La migración requiere una transacción externa del instalador.', 1;
|
|
IF OBJECT_ID(N'dbo.Bit_Bitacora', N'U') IS NULL
|
|
OR OBJECT_ID(N'dbo.Bit_DefinicionesAccion', N'U') IS NULL
|
|
OR OBJECT_ID(N'dbo.Bit_BitacoraCampos', N'U') IS NULL
|
|
OR OBJECT_ID(N'dbo.Bit_BitacoraRelaciones', N'U') IS NULL
|
|
THROW 51000, 'No se encontró la estructura de bitácora revisada.', 1;
|
|
|
|
-- Impedir escrituras concurrentes durante la migración.
|
|
DECLARE @Registros bigint;
|
|
SELECT @Registros = COUNT_BIG(*) FROM dbo.Bit_Bitacora WITH (TABLOCKX, HOLDLOCK);
|
|
CREATE TABLE #ControlMigracionBitacora
|
|
(
|
|
Registros bigint NOT NULL,
|
|
Campos bigint NOT NULL,
|
|
Relaciones bigint NOT NULL
|
|
);
|
|
INSERT INTO #ControlMigracionBitacora
|
|
SELECT @Registros,
|
|
(SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraCampos),
|
|
(SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraRelaciones);
|
|
GO
|
|
|
|
IF @@TRANCOUNT = 0
|
|
THROW 51000, 'La migración requiere una transacción externa.', 1;
|
|
IF OBJECT_ID(N'dbo.Bit_BitacoraEventos', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.Bit_BitacoraEventos
|
|
(
|
|
CveBitacoraEvento bigint IDENTITY(1, 1) NOT NULL
|
|
CONSTRAINT PK_Bit_BitacoraEventos PRIMARY KEY,
|
|
CveDefinicionAccion int NULL,
|
|
CveUsuarioEjecuta int NOT NULL,
|
|
CveUsuarioAutoriza int NULL,
|
|
FechaAutorizacion datetime NULL,
|
|
DescripcionMovimiento nvarchar(1000) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
|
FechaMovimiento datetime NOT NULL
|
|
CONSTRAINT DF_Bit_BitacoraEventos_Fecha DEFAULT SYSDATETIME(),
|
|
DireccionIP varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
|
NombreEquipo varchar(150) COLLATE Modern_Spanish_CS_AS NULL,
|
|
Modulo varchar(150) COLLATE Modern_Spanish_CS_AS NULL,
|
|
EsHistorico bit NOT NULL CONSTRAINT DF_Bit_BitacoraEventos_Historico DEFAULT (0),
|
|
CONSTRAINT FK_Bit_BitacoraEventos_Accion FOREIGN KEY (CveDefinicionAccion)
|
|
REFERENCES dbo.Bit_DefinicionesAccion(CveDefinicionAccion),
|
|
CONSTRAINT FK_Bit_BitacoraEventos_Usuario FOREIGN KEY (CveUsuarioEjecuta)
|
|
REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
CONSTRAINT FK_Bit_BitacoraEventos_Autoriza FOREIGN KEY (CveUsuarioAutoriza)
|
|
REFERENCES dbo.Sis_Usuarios(CveUsuario),
|
|
CONSTRAINT CK_Bit_BitacoraEventos_Autorizacion
|
|
CHECK (CveUsuarioAutoriza IS NOT NULL OR FechaAutorizacion IS NULL)
|
|
);
|
|
END;
|
|
IF COL_LENGTH('dbo.Bit_Bitacora', 'CveBitacoraEvento') IS NULL
|
|
ALTER TABLE dbo.Bit_Bitacora ADD CveBitacoraEvento bigint NULL;
|
|
IF COL_LENGTH('dbo.Bit_Bitacora', 'LlaveRegistroTexto') IS NULL
|
|
ALTER TABLE dbo.Bit_Bitacora ADD LlaveRegistroTexto nvarchar(250) COLLATE Modern_Spanish_CS_AS NULL;
|
|
IF COL_LENGTH('dbo.Bit_BitacoraCampos', 'ValorAnteriorMostrar') IS NULL
|
|
ALTER TABLE dbo.Bit_BitacoraCampos ADD ValorAnteriorMostrar nvarchar(max) COLLATE Modern_Spanish_CS_AS NULL;
|
|
IF COL_LENGTH('dbo.Bit_BitacoraCampos', 'ValorNuevoMostrar') IS NULL
|
|
ALTER TABLE dbo.Bit_BitacoraCampos ADD ValorNuevoMostrar nvarchar(max) COLLATE Modern_Spanish_CS_AS NULL;
|
|
IF COL_LENGTH('dbo.Bit_DefinicionesAccion', 'CodigoAccion') IS NULL
|
|
ALTER TABLE dbo.Bit_DefinicionesAccion ADD CodigoAccion varchar(150) COLLATE Modern_Spanish_CI_AS NULL;
|
|
GO
|
|
IF @@TRANCOUNT = 0
|
|
THROW 51000, 'La migración requiere una transacción externa.', 1;
|
|
IF COL_LENGTH('dbo.Bit_Bitacora', 'DescripcionMovimiento') IS NOT NULL
|
|
BEGIN
|
|
EXEC sys.sp_executesql N' CREATE TABLE #CorrespondenciaEventos
|
|
(
|
|
CveBitacora bigint NOT NULL PRIMARY KEY,
|
|
CveBitacoraEvento bigint NOT NULL UNIQUE
|
|
);
|
|
|
|
-- OUTPUT conserva la correspondencia real de las identidades; nunca se igualan claves.
|
|
MERGE dbo.Bit_BitacoraEventos AS Destino
|
|
USING
|
|
(
|
|
SELECT *
|
|
FROM dbo.Bit_Bitacora
|
|
WHERE CveBitacoraEvento IS NULL
|
|
) AS Origen
|
|
ON 1 = 0
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (CveDefinicionAccion, CveUsuarioEjecuta, CveUsuarioAutoriza, FechaAutorizacion, DescripcionMovimiento, FechaMovimiento, DireccionIP, NombreEquipo, Modulo, EsHistorico)
|
|
VALUES (Origen.CveDefinicionAccion, Origen.CveUsuarioEjecuta, Origen.CveUsuarioAutoriza, Origen.FechaAutorizacion, Origen.DescripcionMovimiento, Origen.FechaMovimiento, Origen.DireccionIP, Origen.NombreEquipo, Origen.Modulo, 1)
|
|
OUTPUT Origen.CveBitacora, inserted.CveBitacoraEvento
|
|
INTO #CorrespondenciaEventos(CveBitacora, CveBitacoraEvento);
|
|
|
|
UPDATE B
|
|
SET B.CveBitacoraEvento = C.CveBitacoraEvento
|
|
FROM dbo.Bit_Bitacora AS B
|
|
INNER JOIN #CorrespondenciaEventos AS C ON C.CveBitacora = B.CveBitacora;
|
|
|
|
UPDATE dbo.Bit_Bitacora
|
|
SET LlaveRegistroTexto = LlaveRegistro
|
|
WHERE LlaveRegistroTexto IS NULL;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT B.CveBitacora, B.CveDefinicionAccion, B.CveUsuarioEjecuta, B.CveUsuarioAutoriza, B.FechaAutorizacion, B.DescripcionMovimiento, B.FechaMovimiento, B.DireccionIP, B.NombreEquipo, B.Modulo
|
|
FROM dbo.Bit_Bitacora AS B
|
|
EXCEPT
|
|
SELECT B.CveBitacora, E.CveDefinicionAccion, E.CveUsuarioEjecuta, E.CveUsuarioAutoriza, E.FechaAutorizacion, E.DescripcionMovimiento, E.FechaMovimiento, E.DireccionIP, E.NombreEquipo, E.Modulo
|
|
FROM dbo.Bit_Bitacora AS B
|
|
INNER JOIN dbo.Bit_BitacoraEventos AS E ON E.CveBitacoraEvento = B.CveBitacoraEvento
|
|
)
|
|
THROW 51000, ''La copia de los encabezados no coincide; se cancela la migración.'', 1;
|
|
|
|
IF EXISTS (SELECT 1 FROM dbo.Bit_Bitacora WHERE CveBitacoraEvento IS NULL OR LlaveRegistroTexto IS NULL)
|
|
THROW 51000, ''Hay registros sin evento o sin clave histórica.'', 1;
|
|
IF EXISTS
|
|
(
|
|
SELECT CveBitacoraEvento
|
|
FROM dbo.Bit_Bitacora
|
|
GROUP BY CveBitacoraEvento
|
|
HAVING COUNT_BIG(*) <> 1
|
|
)
|
|
THROW 51000, ''La correspondencia histórica no es de uno a uno.'', 1;
|
|
-- Las dependencias de las columnas trasladadas se quitan después de verificar la copia.
|
|
DECLARE @Retirar nvarchar(max) = N'''';
|
|
SELECT @Retirar += N''ALTER TABLE dbo.Bit_Bitacora DROP CONSTRAINT '' + QUOTENAME(F.name) + N'';'' + CHAR(10)
|
|
FROM sys.foreign_keys AS F
|
|
WHERE F.parent_object_id = OBJECT_ID(N''dbo.Bit_Bitacora'')
|
|
AND EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.foreign_key_columns AS FC
|
|
INNER JOIN sys.columns AS C ON C.object_id = FC.parent_object_id AND C.column_id = FC.parent_column_id
|
|
WHERE FC.constraint_object_id = F.object_id
|
|
AND C.name IN (''CveDefinicionAccion'', ''CveUsuarioEjecuta'', ''CveUsuarioAutoriza'', ''FechaAutorizacion'', ''DescripcionMovimiento'', ''FechaMovimiento'', ''DireccionIP'', ''NombreEquipo'', ''Modulo'')
|
|
);
|
|
SELECT @Retirar += N''ALTER TABLE dbo.Bit_Bitacora DROP CONSTRAINT '' + QUOTENAME(D.name) + N'';'' + CHAR(10)
|
|
FROM sys.default_constraints AS D
|
|
INNER JOIN sys.columns AS C ON C.object_id = D.parent_object_id AND C.column_id = D.parent_column_id
|
|
WHERE D.parent_object_id = OBJECT_ID(N''dbo.Bit_Bitacora'')
|
|
AND C.name IN (''CveDefinicionAccion'', ''CveUsuarioEjecuta'', ''CveUsuarioAutoriza'', ''FechaAutorizacion'', ''DescripcionMovimiento'', ''FechaMovimiento'', ''DireccionIP'', ''NombreEquipo'', ''Modulo'');
|
|
IF OBJECT_ID(N''dbo.CK_Bit_Bitacora_Autorizacion'', N''C'') IS NOT NULL
|
|
SET @Retirar += N''ALTER TABLE dbo.Bit_Bitacora DROP CONSTRAINT CK_Bit_Bitacora_Autorizacion;'';
|
|
EXEC sys.sp_executesql @Retirar;
|
|
|
|
IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N''dbo.Bit_Bitacora'') AND name = N''IX_Bit_Bitacora_Tabla_Llave_Fecha'')
|
|
DROP INDEX IX_Bit_Bitacora_Tabla_Llave_Fecha ON dbo.Bit_Bitacora;
|
|
|
|
-- Sus columnas pasan al evento; los índices equivalentes se crean en el padre.
|
|
IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N''dbo.Bit_Bitacora'') AND name = N''IX_Bit_Bitacora_FechaMovimiento'')
|
|
DROP INDEX IX_Bit_Bitacora_FechaMovimiento ON dbo.Bit_Bitacora;
|
|
IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N''dbo.Bit_Bitacora'') AND name = N''IX_Bit_Bitacora_CveUsuarioEjecuta'')
|
|
DROP INDEX IX_Bit_Bitacora_CveUsuarioEjecuta ON dbo.Bit_Bitacora;
|
|
IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N''dbo.Bit_Bitacora'') AND name = N''IX_Bit_Bitacora_CveUsuarioAutoriza'')
|
|
DROP INDEX IX_Bit_Bitacora_CveUsuarioAutoriza ON dbo.Bit_Bitacora;
|
|
|
|
-- Si hay otras dependencias no revisadas, ALTER falla y el instalador revierte.
|
|
ALTER TABLE dbo.Bit_Bitacora ALTER COLUMN LlaveRegistro nvarchar(250) COLLATE Modern_Spanish_CS_AS NULL;
|
|
UPDATE dbo.Bit_Bitacora SET LlaveRegistro = NULL
|
|
WHERE TRY_CONVERT(bigint, LlaveRegistro) IS NULL;
|
|
ALTER TABLE dbo.Bit_Bitacora ALTER COLUMN LlaveRegistro bigint NULL;
|
|
ALTER TABLE dbo.Bit_Bitacora DROP COLUMN
|
|
CveDefinicionAccion,
|
|
CveUsuarioEjecuta,
|
|
CveUsuarioAutoriza,
|
|
FechaAutorizacion,
|
|
DescripcionMovimiento,
|
|
FechaMovimiento,
|
|
DireccionIP,
|
|
NombreEquipo,
|
|
Modulo;
|
|
';
|
|
END;
|
|
GO
|
|
|
|
IF @@TRANCOUNT = 0
|
|
THROW 51000, 'La migración requiere una transacción externa.', 1;
|
|
IF EXISTS (SELECT 1 FROM dbo.Bit_Bitacora WHERE CveBitacoraEvento IS NULL)
|
|
THROW 51000, 'Hay registros sin evento.', 1;
|
|
ALTER TABLE dbo.Bit_Bitacora ALTER COLUMN CveBitacoraEvento bigint NOT NULL;
|
|
IF OBJECT_ID(N'dbo.FK_Bit_Bitacora_Evento', N'F') IS NULL
|
|
ALTER TABLE dbo.Bit_Bitacora WITH CHECK ADD CONSTRAINT FK_Bit_Bitacora_Evento
|
|
FOREIGN KEY (CveBitacoraEvento) REFERENCES dbo.Bit_BitacoraEventos(CveBitacoraEvento);
|
|
IF OBJECT_ID(N'dbo.CK_Bit_Bitacora_Llave', N'C') IS NULL
|
|
ALTER TABLE dbo.Bit_Bitacora WITH CHECK ADD CONSTRAINT CK_Bit_Bitacora_Llave
|
|
CHECK (LlaveRegistro IS NOT NULL OR NULLIF(LlaveRegistroTexto, N'') IS NOT NULL);
|
|
|
|
IF OBJECT_ID(N'dbo.UQ_Bit_DefinicionesAccion', N'UQ') IS NOT NULL
|
|
ALTER TABLE dbo.Bit_DefinicionesAccion DROP CONSTRAINT UQ_Bit_DefinicionesAccion;
|
|
ALTER TABLE dbo.Bit_DefinicionesAccion ALTER COLUMN CveTabla int NULL;
|
|
ALTER TABLE dbo.Bit_DefinicionesAccion ALTER COLUMN CveTipoMovimiento tinyint NULL;
|
|
UPDATE dbo.Bit_DefinicionesAccion
|
|
SET CodigoAccion = CONCAT('Historica_', CveDefinicionAccion)
|
|
WHERE CodigoAccion IS NULL;
|
|
ALTER TABLE dbo.Bit_DefinicionesAccion ALTER COLUMN CodigoAccion varchar(150) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
|
IF OBJECT_ID(N'dbo.UQ_Bit_DefinicionesAccion_Codigo', N'UQ') IS NULL
|
|
ALTER TABLE dbo.Bit_DefinicionesAccion ADD CONSTRAINT UQ_Bit_DefinicionesAccion_Codigo UNIQUE (CodigoAccion);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_BitacoraEventos') AND name = N'IX_Bit_BitacoraEventos_Fecha')
|
|
CREATE INDEX IX_Bit_BitacoraEventos_Fecha ON dbo.Bit_BitacoraEventos (FechaMovimiento DESC, CveBitacoraEvento DESC);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_BitacoraEventos') AND name = N'IX_Bit_BitacoraEventos_Usuario_Fecha')
|
|
CREATE INDEX IX_Bit_BitacoraEventos_Usuario_Fecha ON dbo.Bit_BitacoraEventos (CveUsuarioEjecuta, FechaMovimiento DESC);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_BitacoraEventos') AND name = N'IX_Bit_BitacoraEventos_Autoriza_Fecha')
|
|
CREATE INDEX IX_Bit_BitacoraEventos_Autoriza_Fecha ON dbo.Bit_BitacoraEventos (CveUsuarioAutoriza, FechaAutorizacion);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_BitacoraEventos') AND name = N'IX_Bit_BitacoraEventos_Accion_Fecha')
|
|
CREATE INDEX IX_Bit_BitacoraEventos_Accion_Fecha ON dbo.Bit_BitacoraEventos (CveDefinicionAccion, FechaMovimiento DESC);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_Bitacora') AND name = N'IX_Bit_Bitacora_Evento')
|
|
CREATE INDEX IX_Bit_Bitacora_Evento ON dbo.Bit_Bitacora (CveBitacoraEvento, CveBitacora);
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_Bitacora') AND name = N'IX_Bit_Bitacora_Tabla_LlaveNumero')
|
|
CREATE INDEX IX_Bit_Bitacora_Tabla_LlaveNumero ON dbo.Bit_Bitacora (CveTabla, LlaveRegistro, CveBitacoraEvento) WHERE LlaveRegistro IS NOT NULL;
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Bit_Bitacora') AND name = N'IX_Bit_Bitacora_Tabla_LlaveTexto')
|
|
CREATE INDEX IX_Bit_Bitacora_Tabla_LlaveTexto ON dbo.Bit_Bitacora (CveTabla, LlaveRegistroTexto, CveBitacoraEvento) WHERE LlaveRegistroTexto IS NOT NULL;
|
|
|
|
-- Conservar índices equivalentes de campos y todas las relaciones existentes.
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM sys.index_columns AS IC
|
|
INNER JOIN sys.indexes AS I ON I.object_id = IC.object_id AND I.index_id = IC.index_id
|
|
INNER JOIN sys.columns AS C ON C.object_id = IC.object_id AND C.column_id = IC.column_id
|
|
WHERE IC.object_id = OBJECT_ID(N'dbo.Bit_BitacoraCampos')
|
|
AND IC.key_ordinal = 1 AND C.name = N'CveBitacora'
|
|
AND I.is_disabled = 0 AND I.has_filter = 0
|
|
)
|
|
CREATE INDEX IX_Bit_BitacoraCampos_Registro ON dbo.Bit_BitacoraCampos(CveBitacora);
|
|
|
|
-- Códigos de operaciones reales de los servicios; las claves las asigna IDENTITY.
|
|
DECLARE @Acciones TABLE
|
|
(
|
|
CodigoAccion varchar(150) COLLATE Modern_Spanish_CI_AS NOT NULL PRIMARY KEY,
|
|
NombreAccion varchar(150) COLLATE Modern_Spanish_CS_AS NOT NULL
|
|
);
|
|
INSERT INTO @Acciones(CodigoAccion, NombreAccion)
|
|
VALUES
|
|
('ActualizarAvanceEtapa', 'Actualizar avance etapa'),
|
|
('ActualizarProductoServicioPrecioTramite', 'Actualizar producto servicio precio tramite'),
|
|
('AgregarSolicitudEtapa', 'Agregar solicitud etapa'),
|
|
('AgregarTipoTramitePadreTramite', 'Agregar tipo tramite padre tramite'),
|
|
('CambiarEstatusSolicitud', 'Cambiar estatus de solicitud'),
|
|
('CancelarCita', 'Cancelar cita'),
|
|
('CargarDocumentoSolicitud', 'Cargar documento solicitud'),
|
|
('CargarDocumentoVisita', 'Cargar documento visita'),
|
|
('EliminarArchivoEtapa', 'Eliminar archivo etapa'),
|
|
('EliminarClasificacion', 'Eliminar clasificacion'),
|
|
('EliminarComentarioVisita', 'Eliminar comentario visita'),
|
|
('EliminarConfiguracionSolicitud', 'Eliminar configuracion solicitud'),
|
|
('EliminarCuestionarioVisita', 'Eliminar cuestionario visita'),
|
|
('EliminarDiaFestivo', 'Eliminar dia festivo'),
|
|
('EliminarDocumentoRequeridoTramite', 'Eliminar documento requerido tramite'),
|
|
('EliminarDocumentoSolicitud', 'Eliminar documento solicitud'),
|
|
('EliminarDocumentoVisita', 'Eliminar documento visita'),
|
|
('EliminarEstatusTramite', 'Eliminar estatus tramite'),
|
|
('EliminarEtapa', 'Eliminar etapa'),
|
|
('EliminarFraccionamiento', 'Eliminar fraccionamiento'),
|
|
('EliminarGisEtapa', 'Eliminar gis etapa'),
|
|
('EliminarLote', 'Eliminar lote'),
|
|
('EliminarOpcionTramite', 'Eliminar opcion tramite'),
|
|
('EliminarOpcionVisita', 'Eliminar opcion visita'),
|
|
('EliminarPagoDetalleTramite', 'Eliminar pago detalle tramite'),
|
|
('EliminarPagoTramite', 'Eliminar pago tramite'),
|
|
('EliminarPlantillaVisita', 'Eliminar plantilla visita'),
|
|
('EliminarPreguntaTramite', 'Eliminar pregunta tramite'),
|
|
('EliminarPreguntaVisita', 'Eliminar pregunta visita'),
|
|
('EliminarProductoServicio', 'Eliminar producto servicio'),
|
|
('EliminarTipoDocumentoTramite', 'Eliminar tipo documento tramite'),
|
|
('EliminarTipoTramite', 'Eliminar tipo tramite'),
|
|
('EliminarTipoTramitePadreTramite', 'Eliminar tipo tramite padre tramite'),
|
|
('EliminarTurno', 'Eliminar turno'),
|
|
('EliminarUnidadMedida', 'Eliminar unidad medida'),
|
|
('EliminarUsuario', 'Eliminar usuario'),
|
|
('GuardarCita', 'Guardar cita'),
|
|
('GuardarClasificacion', 'Guardar clasificacion'),
|
|
('GuardarClienteUsuario', 'Guardar cliente usuario'),
|
|
('GuardarComentarioVisita', 'Guardar comentario visita'),
|
|
('GuardarCondicionesEtapa', 'Guardar condiciones etapa'),
|
|
('GuardarConfiguracionSolicitud', 'Guardar configuracion solicitud'),
|
|
('GuardarConfiguracionVisitas', 'Guardar configuracion visitas'),
|
|
('GuardarCuestionarioVisita', 'Guardar cuestionario visita'),
|
|
('GuardarDiaFestivo', 'Guardar dia festivo'),
|
|
('GuardarDocumentoRequeridoTramite', 'Guardar documento requerido tramite'),
|
|
('GuardarEstatusTramite', 'Guardar estatus tramite'),
|
|
('GuardarEtapa', 'Guardar etapa'),
|
|
('GuardarFraccionamiento', 'Guardar fraccionamiento'),
|
|
('GuardarGisEtapa', 'Guardar gis etapa'),
|
|
('GuardarLote', 'Guardar lote'),
|
|
('GuardarLotes', 'Guardar lotes'),
|
|
('GuardarOpcionTramite', 'Guardar opcion tramite'),
|
|
('GuardarOpcionVisita', 'Guardar opcion visita'),
|
|
('GuardarPagoDetalleTramite', 'Guardar pago detalle tramite'),
|
|
('GuardarPagoTramite', 'Guardar pago tramite'),
|
|
('GuardarPlantillaVisita', 'Guardar plantilla visita'),
|
|
('GuardarPreguntaTramite', 'Guardar pregunta tramite'),
|
|
('GuardarPreguntaVisita', 'Guardar pregunta visita'),
|
|
('GuardarProductoServicio', 'Guardar producto servicio'),
|
|
('GuardarTipoDocumentoTramite', 'Guardar tipo documento tramite'),
|
|
('GuardarTipoTramite', 'Guardar tipo tramite'),
|
|
('GuardarTurno', 'Guardar turno'),
|
|
('GuardarUnidadMedida', 'Guardar unidad medida'),
|
|
('GuardarUsuario', 'Guardar usuario'),
|
|
('GuardarVisita', 'Guardar visita'),
|
|
('LimpiarLotesEtapa', 'Limpiar lotes etapa'),
|
|
('MoverOrdenEtapa', 'Mover orden etapa'),
|
|
('RegistrarArchivoEtapa', 'Registrar archivo etapa'),
|
|
('ReiniciarContrasenaUsuario', 'Reiniciar contraseña de usuario'),
|
|
('ReordenarCatalogoTramite', 'Reordenar catalogo tramite'),
|
|
('ReordenarPlantillaVisita', 'Reordenar plantilla visita'),
|
|
('RevisarDocumentoSolicitud', 'Revisar documento solicitud');
|
|
|
|
INSERT INTO dbo.Bit_DefinicionesAccion
|
|
(CodigoAccion, NombreAccion, DescripcionAccion, CveTabla, CveTipoMovimiento, Activo)
|
|
SELECT A.CodigoAccion, A.NombreAccion, A.NombreAccion, NULL, NULL, 1
|
|
FROM @Acciones AS A
|
|
WHERE NOT EXISTS
|
|
(
|
|
SELECT 1 FROM dbo.Bit_DefinicionesAccion AS D WHERE D.CodigoAccion = A.CodigoAccion
|
|
);
|
|
|
|
-- Resolver el turno con metadatos existentes, sin claves de catálogo inventadas.
|
|
UPDATE C
|
|
SET C.CveTablaReferencia = T.CveTabla,
|
|
C.CveCampoMostrarReferencia = M.CveCampo
|
|
FROM dbo.Bit_Campos AS C
|
|
INNER JOIN dbo.Bit_Tablas AS H ON H.CveTabla = C.CveTabla
|
|
INNER JOIN dbo.Bit_Tablas AS T ON T.NombreTablaSQL = 'Sis_Turnos'
|
|
INNER JOIN dbo.Bit_Campos AS M ON M.CveTabla = T.CveTabla AND M.NombreCampoSQL = 'Turno'
|
|
WHERE H.NombreTablaSQL = 'Sis_TurnosHorarios' AND C.NombreCampoSQL = 'CveTurno';
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1 FROM #ControlMigracionBitacora
|
|
WHERE Registros <> (SELECT COUNT_BIG(*) FROM dbo.Bit_Bitacora)
|
|
OR Campos <> (SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraCampos)
|
|
OR Relaciones <> (SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraRelaciones)
|
|
)
|
|
THROW 51000, 'Cambió la cantidad de registros, campos o relaciones durante la migración.', 1;
|
|
|
|
SELECT
|
|
(SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraEventos WHERE EsHistorico = 1) AS EventosHistoricos,
|
|
(SELECT COUNT_BIG(*) FROM dbo.Bit_Bitacora) AS Registros,
|
|
(SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraCampos) AS Campos,
|
|
(SELECT COUNT_BIG(*) FROM dbo.Bit_BitacoraRelaciones) AS Relaciones;
|
|
DROP TABLE #ControlMigracionBitacora;
|
|
GO
|