etl: logging y auditoría en ssis
DESCRIPTION
Cuando cargamos nuestros datos ¿como aseguramos que nuestros paquetes están ejecutándose correctamente sin dar errores? ¿como los configuro? ¿que es recomendable auditar y que no?TRANSCRIPT
ETL: Logging y auditoría en SSIS
Salvador Ramos
BIN-302
Mentor – Business Intelligence SQL Server MVP, MCTS, MCITP
α El día a día
α ¿Qué ha ocurrido?
α ¿Qué auditar?
α Logging, auditoría y trazabilidad del dato
α Conclusiones
Agenda
α Diseño de procesos ETL
α Testing
α Puesta en producción
α Ejecuciones periódicas
El día a día
α Sólo tengo un mensaje de error
α No sé … β qué ha ocurrido antes del error
β qué ha ocasionado el error
β desde donde relanzar el proceso
β qué datos se han actualizado
β si son coherentes mis datos tras el error
¿Qué ha ocurrido? Error de ejecución del paquete
α La aplicación me dice que vendimos 20.000 y el BI 20.500
α Informes, con los mismos parámetros y sacados en fechas diferentes, muestran datos diferentes
α No consigo reproducirlo
¿Qué ha ocurrido? Los datos no cuadran
¿Qué ha ocurrido? Tenemos un problema
¿Qué ha ocurrido? Tenemos un problema
α El Logging de SSIS es necesario, pero no suficiente
α Además necesitamos: β Auditar procesos con detalle
β Registrar cambios
β Trazabilidad del dato desde el origen al destino
¿Hay solución?
α Ejecuciones de paquetes β Paquetes y versiones
β Inicio , Checkpoints, Fin
α Errores de ejecución
α Orígenes y destinos β Fuentes de datos
β Detalle de sentencias ejecutadas
α Filas afectadas β Id de ejecución del paquete
β Cambios realizados
Framework propuesto ¿Qué vamos a auditar?
Framework propuesto Ejecución de paquetes - almacenamiento
Framework propuesto
CREATE PROCEDURE [Config].[ExecutionLogSSIS_Insert]
@PackageGUID UNIQUEIDENTIFIER
, @PackageName VARCHAR(250)
, @PackageCreator VARCHAR(250)
, @CreationDate DATETIME
, @VersionGUID UNIQUEIDENTIFIER
, @VersionBuild INT
, @VersionMajor INT
, @VersionMinor INT
, @VersionComments VARCHAR(250)
, @ExecutionGUID UNIQUEIDENTIFIER
, @ParentExecutionGUID UNIQUEIDENTIFIER
, @Computer VARCHAR(100)
, @User VARCHAR(100)
, @Event CHAR(1)
, @EventDescription VARCHAR(100)
, @DateExecution DATETIME
AS
Ejecución de paquetes – Inserción de filas
Framework propuesto Errores - almacenamiento
Framework propuesto
CREATE PROCEDURE [Config].[ErrorLogSSIS_Insert]
@ExecutionID INT
, @DateExecution DATETIME
, @ErrorCode INT
, @ErrorDescription VARCHAR(MAX)
AS
SET NOCOUNT ON;
BEGIN TRAN
-- INSERT Execution
INSERT INTO Config.ErrorLogSSIS(ExecutionID,
DateExecution, ErrorCode, ErrorDescription)
VALUES(@ExecutionID, @DateExecution, @ErrorCode,
@ErrorDescription)
COMMIT
GO
Errores - inserción de filas
Framework propuesto Orígenes y destinos - almacenamiento
Framework propuesto
CREATE PROCEDURE
[Config].[ExecutionLogSSIS_SourceDest_Insert]
@ExecutionID INT
, @Type TINYINT -- Origen o Destino
, @SourceType TINYINT
, @Description VARCHAR(MAX)
, @Rows INT
AS
SET NOCOUNT ON;
BEGIN TRAN
-- INSERT SourceDest
INSERT INTO Config.ExecutionLogSSIS_SourceDest
(ExecutionID, [Type], SourceType, [Description], [Rows])
VALUES(@ExecutionID, @Type, @SourceType,
@Description, @Rows)
COMMIT
GO
Orígenes y destinos - inserción de filas
α Una tabla adicional por cada tabla a auditar
Framework propuesto Historial de cambios - almacenamiento
Framework propuesto y paquete de ejemplo
Framework propuesto Almacenamiento
α Crear plantillas
α Crear informes
α Auditar variables del paquete
α Control de verbosidad (verbose) β Hacerlo dinámico
Framework propuesto Y aún hay mas …
α Logging, auditoría y trazabilidad del dato
Conclusiones ¿Qué ha ocurrido?
No olvideis rellenar las evaluaciones en el Portal
del Summit!
Nos encontrareis en la zona de exposición en los
siguientes horarios
Salvador Ramos
SQL Server MVP, MCTS, MCITP
α El miércoles por la tarde a la hora del café
α En cualquier descanso
Mentor – Business Intelligence