Buscar contenidos

viernes, 16 de agosto de 2024

Ejemplo SP + JOB para traslado de tabla/Históricos

 Para generar un Job en SQL Server 2019 que traslade los registros más antiguos de la tabla persona a una tabla espejo histórica, manteniendo solo los 10,000 registros más recientes en la tabla principal, puedes seguir los siguientes pasos:

  1. Crear la tabla histórica:

    CREATE TABLE persona_historica ( nombre NVARCHAR(255), edad INT, email NVARCHAR(255), identity INT PRIMARY KEY );
  2. Crear un procedimiento almacenado para realizar la transferencia: Este procedimiento moverá los registros más antiguos a la tabla histórica y luego los eliminará de la tabla principal.

    CREATE PROCEDURE sp_MoverRegistrosAntiguos AS BEGIN -- Mover los registros más antiguos a la tabla histórica INSERT INTO persona_historica (nombre, edad, email, identity) SELECT nombre, edad, email, identity FROM persona WHERE identity <= (SELECT MIN(identity) FROM (SELECT TOP 10000 identity FROM persona ORDER BY identity DESC) AS t); -- Eliminar los registros movidos de la tabla principal DELETE FROM persona WHERE identity <= (SELECT MIN(identity) FROM (SELECT TOP 10000 identity FROM persona ORDER BY identity DESC) AS t); END;
  3. Crear un Job en SQL Server Agent: Puedes crear un Job en SQL Server Management Studio (SSMS) que ejecute el procedimiento almacenado una vez por semana.

    • Abre SQL Server Management Studio (SSMS).
    • Navega a SQL Server Agent > Jobs.
    • Haz clic derecho en Jobs y selecciona New Job....
    • En la pestaña General, dale un nombre al Job, por ejemplo, MoverRegistrosAntiguos.
    • En la pestaña Steps, haz clic en New... para agregar un nuevo paso.
      • En Type, selecciona Transact-SQL script (T-SQL).
      • En Command, ingresa la llamada al procedimiento almacenado:
        sql
        EXEC sp_MoverRegistrosAntiguos;
      • Haz clic en OK para guardar el paso.
    • En la pestaña Schedule, haz clic en New... para crear un nuevo horario.
      • Configura el Job para que corra una vez por semana en el día y hora que prefieras.
    • Haz clic en OK para guardar el Job.

Este Job ahora se ejecutará automáticamente una vez por semana, manteniendo solo los 10,000 registros más recientes en la tabla persona y trasladando los demás a la tabla persona_historica.

No hay comentarios:

Publicar un comentario