SQL_SERV

Práctica 9. Implementación de un Pipeline de CI/CD para Bases de Datos

Objetivos de la práctica:

Duración aproximada:

Insumos necesarios:

Instrucciones

1. Configuración de Control de Versiones (Git):

2. Automatización de Tareas Administrativas:

3. Configuración del Pipeline de CI:

4. Pruebas Automatizadas de Base de Datos:

5. Despliegue Continuo (CD):

6. Prueba del Pipeline Completo:

Scripts necesarios

Parte 1: Script de Modificación de la Base de Datos En este ejemplo, vamos a agregar una nueva columna a una tabla existente y a crear un índice para mejorar el rendimiento de las consultas.

-- Modificación de la base de datos: Agregar una columna y crear un índice
USE [NombredetuBaseDeDatos]
-- Verificar si la columna ya existe antes de agregarla
IF NOT EXISTS (SELECT * FROM sys.columns 
               WHERE Name = N'NuevaColumna' 
               AND Object_ID = Object_ID(N'dbo.NombreTabla'))
BEGIN
    ALTER TABLE dbo.NombreTabla
    ADD NuevaColumna NVARCHAR(100) NULL;
END
-- Crear un índice en la nueva columna para optimizar las consultas
IF NOT EXISTS (SELECT * FROM sys.indexes 
               WHERE name = N'IX_NombreTabla_NuevaColumna' 
               AND object_id = OBJECT_ID(N'dbo.NombreTabla', N'U'))
BEGIN
    CREATE INDEX IX_NombreTabla_NuevaColumna
    ON dbo.NombreTabla (NuevaColumna);
END

Parte 2: Automatización de tareas administrativas A continuación, se presenta un script que incluye la automatización de tareas administrativas comunes como backups, reconstrucción de índices y actualización de estadísticas.

Script de Backup automático:
Este script realizará un backup completo de la base de datos.

-- Reconstrucción y reorganización de índices fragmentados
USE [NombreBaseDeDatos]
DECLARE @TableName NVARCHAR(255);

DECLARE IndexCursor CURSOR FOR
SELECT object_name(i.object_id) AS TableName
FROM sys.indexes AS i
JOIN sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') AS d
ON i.object_id = d.object_id AND i.index_id = d.index_id
WHERE d.avg_fragmentation_in_percent > 30
AND i.index_id > 0;
OPEN IndexCursor;
FETCH NEXT FROM IndexCursor INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT 'Reconstruyendo índice en ' + @TableName;
    EXEC('ALTER INDEX ALL ON ' + @TableName + ' REBUILD');
    FETCH NEXT FROM IndexCursor INTO @TableName;
END
CLOSE IndexCursor;
DEALLOCATE IndexCursor;

Actualización de estadísticas:
Este script actualizará las estadísticas de todas las tablas para garantizar que las consultas utilicen los mejores planes de ejecución.

-- Actualización de estadísticas para optimizar el rendimiento de las consultas
USE [NombreBaseDeDatos]
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN';

Tareas Automatizadas en SQL Server Agent:

Instrucciones para Configurar Tareas en SQL Server Agent:

Resultado esperado

Al finalizar la práctica, los participantes habrán configurado un pipeline de CI/CD completo para bases de datos que automatiza tanto las tareas administrativas como las pruebas de los cambios. Comprenderán la importancia de automatizar tanto el mantenimiento de la base de datos como las pruebas, asegurando que los sistemas funcionen de manera óptima y sin interrupciones. Además, habrán experimentado cómo los cambios se despliegan de forma continua y confiable, minimizando los riesgos y maximizando la eficiencia.