DECLARE @MarkMainTraceComplete BIT DECLARE @IsVisible BIT - El objetivo es encontrar la actividad primaria de la actividad ...

'

              DECLARE @MarkMainTraceComplete BIT
              DECLARE @IsVisible BIT
                  
              -- El objetivo es encontrar la actividad primaria de la actividad que se está intentando actualizar
              -- esta información se almacena en la tabla de continuaciones. Dado que se deben tomar decisiones
              -- según este valor, se debe evitar que los usuarios lo actualicen después de leerlo, o bien
              -- si no se encuentra nada, se debe evitar que inserten un valor. Para impedir la inserción,
              -- se usa un applock (bloqueo de aplicación) en el ActivityID, de manera que el protocolo requiera que antes de agregar una continuación,
              -- se aplique un applock exclusivo en el identificador. Para evitar que cambie, se usan
              -- bloqueos de lectura repetible. El valor podría variar si el elemento primario actual no es la 
              -- raíz y, por lo tanto, al establecer su continuación, se indicaría su nuevo elemento primario.
            
              -- Si el seguimiento actual es una continuación, RowID es su identificador de actividad principal;
              -- de lo contrario, RowID es el identificador de actividad actual (seguimiento principal o un seguimiento nuevo)
              DECLARE @RowID NVARCHAR(128)

              DECLARE @@ret INT
              DECLARE @@parentTemp NVARCHAR(128)
              SET @@parentTemp = @ActivityID
              WHILE (@@parentTemp IS NOT NULL)
              BEGIN
                  SET @RowID = @@parentTemp

                  EXEC @@ret = sp_getapplock @@parentTemp, 'Shared', 'Transaction', 100
                  IF (@@ret < 0)  -- bloqueo no concedido
                  BEGIN
                    RAISERROR('Lock not granted', 16, 1)
                    RETURN
                  END

                  SET @@parentTemp = NULL
                  SELECT @@parentTemp = ParentActivityID 
                  FROM
English
English (United States)
Deutsch (Deutschland)
German (Germany)
Español (España)
Spanish (Spain)
Français (France)
French (France)
日本語
Japanese
한국어
Korean