none
Procedimiento almacenado para revisar el estatus de una inserción RRS feed

Respuestas

  • Hola.

    Puedes explicar con mas detalle lo que solicitas?

    viernes, 13 de septiembre de 2019 18:22
  • Necesito hacer un modulo donde hay un botón que dice estatus y cuando este se ejecuta muestra una ventana con el proceso que lleva una actualización de tablas 

    El usuario sube archivos xlms grandes al sistema y quiere ir checando cuanto % lleva para ver cuanto maso menos se tardara la carga de los datos 

    viernes, 13 de septiembre de 2019 18:31
  • Hola Valentin Alexis:

    Una posible solución al escenario que planteas

    CREATE TABLE insercion_masiva
    (id  INT IDENTITY(1, 1), 
     num INT
    );
    GO
    

    Con la tabla para insertar datos, creo 2 procedimientos:

    CREATE PROCEDURE SP_INSERCION_MASIVA_XLMS AS BEGIN DECLARE @CONTADOR INT = 100; /* PROCESO FICTICIO DE SUBIDA DE ARCHIVOS IMAGINANDO QUE LO SOLICITADO SE REALIZA MEDIANTE ALGÚN TIPO DE BUCLE. */ WHILE @CONTADOR > 0 BEGIN INSERT INTO insercion_masiva(NUM) VALUES (@CONTADOR); WAITFOR DELAY '00:00:02';

    set @contador = @contador - 1; /* ESPERAMOS 2 SEGUNDOS PARA DAR TIEMPO A EJECUTAR EL PROCESO DE CONTEO */ END; END; GO CREATE PROCEDURE SP_CONTADOR_INSERCION_MASIVA(@ORIGEN INT, @TOTAL INT, @PORCENTAJE INT OUT) AS BEGIN

    /* SE DESCONOCE COMO ESTA PLANTEADO EL ESCENARIO */

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED DECLARE @ACTUAL INT; /* PARA SABER EL PORCENTAJE SUBIDO, HACE FALTA SABER CUANTOS REGISTROS SE IBAN A SUBIR Y CUANTOS TENIAS ANTES DE EMPEZAR */ SELECT @ACTUAL= COUNT(*)-@ORIGEN FROM insercion_masiva; SET @PORCENTAJE = @ACTUAL * 100 / @TOTAL; END

    Ejecuto primero el procedimiento de insercción:

    Bloqueando la ventana (52) hasta su finalización.

    Ejecuto después el procedimiento de conteo.

    DECLARE @ORIGEN INT=1;
    DECLARE @TOTAL INT = 100;
    DECLARE @PORCENTAJE INT;
    EXEC SP_CONTADOR_INSERCION_MASIVA 
    @ORIGEN,
    @TOTAL,
    @PORCENTAJE OUT;
    PRINT @PORCENTAJE;

    Contando de momento el 7 porciento de registros insertados.


    • Editado Javi Fernández F sábado, 14 de septiembre de 2019 5:17 Decrementar el contador para limitar el bucle.
    • Marcado como respuesta Pablo RubioModerator miércoles, 18 de septiembre de 2019 16:27
    sábado, 14 de septiembre de 2019 5:11

Todas las respuestas

  • Hola.

    Puedes explicar con mas detalle lo que solicitas?

    viernes, 13 de septiembre de 2019 18:22
  • Necesito hacer un modulo donde hay un botón que dice estatus y cuando este se ejecuta muestra una ventana con el proceso que lleva una actualización de tablas 

    El usuario sube archivos xlms grandes al sistema y quiere ir checando cuanto % lleva para ver cuanto maso menos se tardara la carga de los datos 

    viernes, 13 de septiembre de 2019 18:31
  • ¿Con que metodo los "sube"?

    IIslas Master Consultant SQL Server

    viernes, 13 de septiembre de 2019 20:52
  • Con un insert, son barias tablas algunas son mas pesadas que otras 

      
    viernes, 13 de septiembre de 2019 21:12
  • Hola Valentin Alexis:

    Una posible solución al escenario que planteas

    CREATE TABLE insercion_masiva
    (id  INT IDENTITY(1, 1), 
     num INT
    );
    GO
    

    Con la tabla para insertar datos, creo 2 procedimientos:

    CREATE PROCEDURE SP_INSERCION_MASIVA_XLMS AS BEGIN DECLARE @CONTADOR INT = 100; /* PROCESO FICTICIO DE SUBIDA DE ARCHIVOS IMAGINANDO QUE LO SOLICITADO SE REALIZA MEDIANTE ALGÚN TIPO DE BUCLE. */ WHILE @CONTADOR > 0 BEGIN INSERT INTO insercion_masiva(NUM) VALUES (@CONTADOR); WAITFOR DELAY '00:00:02';

    set @contador = @contador - 1; /* ESPERAMOS 2 SEGUNDOS PARA DAR TIEMPO A EJECUTAR EL PROCESO DE CONTEO */ END; END; GO CREATE PROCEDURE SP_CONTADOR_INSERCION_MASIVA(@ORIGEN INT, @TOTAL INT, @PORCENTAJE INT OUT) AS BEGIN

    /* SE DESCONOCE COMO ESTA PLANTEADO EL ESCENARIO */

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED DECLARE @ACTUAL INT; /* PARA SABER EL PORCENTAJE SUBIDO, HACE FALTA SABER CUANTOS REGISTROS SE IBAN A SUBIR Y CUANTOS TENIAS ANTES DE EMPEZAR */ SELECT @ACTUAL= COUNT(*)-@ORIGEN FROM insercion_masiva; SET @PORCENTAJE = @ACTUAL * 100 / @TOTAL; END

    Ejecuto primero el procedimiento de insercción:

    Bloqueando la ventana (52) hasta su finalización.

    Ejecuto después el procedimiento de conteo.

    DECLARE @ORIGEN INT=1;
    DECLARE @TOTAL INT = 100;
    DECLARE @PORCENTAJE INT;
    EXEC SP_CONTADOR_INSERCION_MASIVA 
    @ORIGEN,
    @TOTAL,
    @PORCENTAJE OUT;
    PRINT @PORCENTAJE;

    Contando de momento el 7 porciento de registros insertados.


    • Editado Javi Fernández F sábado, 14 de septiembre de 2019 5:17 Decrementar el contador para limitar el bucle.
    • Marcado como respuesta Pablo RubioModerator miércoles, 18 de septiembre de 2019 16:27
    sábado, 14 de septiembre de 2019 5:11
  • Gracias Javi Fernández

    Me sirvió mucho solo realice unos camio y listo 

    viernes, 20 de septiembre de 2019 17:05
  • De nada.
    viernes, 20 de septiembre de 2019 17:46