Back to OIM Explorer

dbo.QBM_PJobQueueInit_i

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure.

Source: sandbox-db sys.sql_modules

Source size: 9.069 characters

Interpretation

  • Database routine. Review parameters, called procedures, DBQueue inserts, and QBM_PJobCreate helper calls before assuming side effects.

Relations

  • No extracted relations.

Typed Edges

  • references source dbo.QBM_FCVElementToObjectKey1 source text reference
  • references source dbo.QBM_FCVStringToGUID source text reference
  • references source dbo.QBM_FGIConfigparmValue source text reference
  • references source dbo.QBM_FGIDBDataOrigin source text reference
  • references source dbo.QBM_FGIJobQueueMessageAdd source text reference
  • references source dbo.QBM_FGIJobQueueTopJob source text reference
  • references source dbo.QBM_FGISessionContext source text reference
  • references source dbo.QBM_FGISessionErrorRethrow source text reference
  • references source dbo.QBM_PExecuteSQLWithRetry_LLP source text reference
  • references source dbo.QBM_PJobQueueInit source text reference
  • references source dbo.QBM_PJobQueueSetSameServer source text reference
  • references source dbo.QBM_PQBMServerHasJobService source text reference
  • references source dbo.QBM_PSessionContextSet source text reference
  • references source dbo.QBM_PSessionErrorAdd source text reference

Complete Source

SQL388 lines
1CREATE PROCEDURE QBM_PJobQueueInit_i(2  @queue nvarchar(255),3  @SessionID varchar(38) = '',4  @SetSessionOnly BIT5)6AS7BEGIN8  DECLARE @uid_tree varchar(38)9  DECLARE @uid_job varchar(38)10  DECLARE @SQLcmd nvarchar(max)11  DECLARE @isMasterSQL int = 012  DECLARE @UID_QBMServer varchar(38)13  DECLARE @SessionID_DB varchar(38)14  DECLARE @msg nvarchar(1000)15  DECLARE @GenProcID varchar(38)16  DECLARE @XUser nvarchar(64)17  DECLARE @Xdate datetime = getutcdate()18  DECLARE @UID_QBMJobqueueOverview varchar(38) = dbo.QBM_FCVStringToGUID('',19  @queue)20  DECLARE @QueueMirror QBM_YCursorBuffer21  DECLARE @ElementCount int22  DECLARE @ElementIndex int23  DECLARE @AffectedQueuesExceptMe QBM_YParameterlist24  DECLARE @JobqueueMessage nvarchar(1000)25  DECLARE @NewState nvarchar(16)26  DECLARE @SQLOverviewUpdate nvarchar(max)27  DECLARE @OverviewUpdateRowcount int28  DECLARE @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('')29  DECLARE @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser')30  SET XACT_ABORT OFF31  BEGIN TRY32    SELECT @GenProcID = dbo.QBM_FGISessionContext('')33    SELECT @XUser = dbo.QBM_FGISessionContext('XUser')34    IF isnull(@XUser,35    '') = ''36    BEGIN37      SELECT @XUser =38      LEFT(Object_name(@@procid),39      64)40      EXEC QBM_PSessionContextSet 'GenProcID',41        @GenProcID42      EXEC QBM_PSessionContextSet 'XUser',43        @XUser44    END45    SELECT46      TOP 1 @UID_QBMServer = UID_QBMServer,47      @SessionID_DB = isnull(SessionID,48      '')49    FROM QBMServer50    WHERE51      QueueName = @queue52    IF EXISTS(53      SELECT TOP 1 154      FROM QBMServerHasServerTag ht55      WHERE56        ht.UID_QBMServer = @UID_QBMServer AND ht.UID_QBMServerTag = 'QBM-ST-Is07')57    BEGIN58      SELECT @isMasterSQL = 159    END60    IF isnull(@UID_QBMServer,61    '') = ''62    BEGIN63      IF dbo.QBM_FGIConfigparmValue('Common\Jobservice\AutoCreateServerFromQueues') > ' '64      BEGIN65        SELECT @UID_QBMServer = NEWID()66        SELECT @SessionID_DB = @SessionID67        INSERT INTO QBMServer(QueueName,68        UID_QBMServer,69        XObjectKey,70        Ident_Server,71        XDateInserted,72        XDateUpdated,73        XUserInserted,74        XUserUpdated,75        SessionID)76        SELECT77          @queue,78          @UID_QBMServer,79          dbo.QBM_FCVElementToObjectKey1('QBMServer',80          'UID_QBMServer',81          @UID_QBMServer),82        CASE charindex('\',83        reverse(@queue))84          WHEN 0 THEN85        @queue86        ELSE reverse(SUBSTRING(reverse(@queue), 1, charindex('\', reverse(@queue)) -1))87        END AS Ident_Server,88        GETUTCDATE(),89        GETUTCDATE(),90        @XUser,91        @XUser,92        @SessionID_DB93      END94      ELSE95      BEGIN96        SELECT @msg = '#LDS#No server found for the queue {0}.|' + @queue + N '|'97        RAISERROR(@msg,98        18,99        2)100          WITH nowait101      END102    END103    IF isnull(@SessionID_DB,104    '') <> isnull(@SessionID,105    '') AND @SessionID > ' '106    BEGIN107      EXEC QBM_PSessionContextSet 'GenProcID',108        @GenProcID109      EXEC QBM_PSessionContextSet 'XUser',110        @XUser111      UPDATE QBMServer112      SET SessionID = @SessionID,113      XDateUpdated = @Xdate,114      XUserUpdated = @XUser115      WHERE116        UID_QBMServer = @UID_QBMServer117    END118    IF @SetSessionOnly = 1119    BEGIN120      GOTO endWithoutReset121    END122    SELECT123      @SQLOverviewUpdate = CONCAT('124update QBMJobqueueOverview 125	set IsInitQueueRunning = 1126	from QBMJobqueueOverview o 127	where o.UID_QBMJobqueueOverview = '''128      ,129      @UID_QBMJobqueueOverview,130      '''131	 and o.IsInitQueueRunning = 0')132    EXEC @OverviewUpdateRowcount = QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLOverviewUpdate,133      @LockTimeout_ms = 20,134      @MaxWaitTimeForLock_s = 3,135      @ProcIDForJournal = DEFAULT,136      @HandleErrorSilent = 0137    IF @OverviewUpdateRowcount = 0138    BEGIN139      GOTO endWithoutReset140    END141    IF(142      SELECT TOP 1 DataOrigin143      FROM DialogDatabase d144      WITH(readpast)145    WHERE146      d.IsMainDatabase = 1) <> dbo.QBM_FGIDBDataOrigin()147    BEGIN148      SELECT149        @JobqueueMessage = N 'status set to FROZEN by reinitializing jobqueue because of wrong DialogDatabase.DataOrigin'150      SELECT @NewState = 'FROZEN'151    END152    ELSE153    BEGIN154      SELECT @JobqueueMessage = N 'status changed by reinitializing jobqueue'155      SELECT @NewState = 'TRUE'156    END157    EXEC QBM_PSessionContextSet 'GenProcID',158      @GenProcID159    EXEC QBM_PSessionContextSet 'XUser',160      @XUser161    UPDATE jobqueue162    SET ready2exe = @NewState,163    UID_JobSameServer = q.UID_Job,164    ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages,165    @JobqueueMessage),166    XDateUpdated = @Xdate,167    XUserUpdated = @XUser168    FROM JobQueue q169    JOIN(170    SELECT171      UID_Tree,172      count(*) AS CountItems173    FROM JobQueue174    WHERE175      queue = @queue AND Ready2EXE IN(N 'LOADED', N 'PROCESSING', N 'MISSING')176    GROUP BY UID_Tree177    HAVING count(*) = 1) AS x178      ON q.UID_Tree = x.UID_Tree179    WHERE180      ready2exe IN(N 'LOADED',181    N 'PROCESSING',182    N 'MISSING') AND NOT EXISTS(183    SELECT TOP 1 1184    FROM JobQueue q3185    WHERE186      q3.Ready2EXE IN(N 'DELETE', N 'HISTORY') AND q3.UID_Tree = q.UID_Tree)187    UPDATE JobQueue188    SET Ready2EXE = N 'HISTORY',189    ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages,190    N 'status set to HISTORY by reinitializing jobqueue because of undefined root job'),191    XDateUpdated = @Xdate,192    XUserUpdated = @XUser193    FROM JobQueue q194    JOIN(195    SELECT q2.UID_Tree196    FROM JobQueue q2197    GROUP BY q2.UID_Tree198    HAVING sum(convert(int, q2.IsRootJob)) <> 1) AS x199      ON q.UID_Tree = x.UID_Tree200    WHERE201      q.Ready2EXE NOT IN(N 'HISTORY',202    N 'DELETE')203    INSERT INTO @QueueMirror(UID1,204    UID2)205    SELECT206      DISTINCT q.uid_tree,207      dbo.QBM_FGIJobQueueTopJob(q.UID_Tree)208    FROM jobqueue q209    WHERE210      q.queue = @queue AND(q.ready2exe IN(N 'LOADED', N 'PROCESSING', N 'MISSING', N 'TRUE') OR EXISTS(211    SELECT TOP 1 1212    FROM(213    SELECT214      uid_tree, count(z.ready2exe) AS CountItems215    FROM jobqueue q1216    LEFT217    OUTER218    JOIN(219    VALUES(N 'TRUE'),(N 'LOADED'),(N 'PROCESSING')) AS z(Ready2exe)220      ON z.ready2exe = q1.ready2exe221    GROUP BY uid_tree222    HAVING count(z.ready2exe) = 0) AS y223    WHERE224      y.uid_tree = q.uid_tree)) AND NOT EXISTS(225    SELECT TOP 1 1226    FROM jobqueue q3227    WHERE228      q3.ready2exe IN(N 'FROZEN', N 'OVERLIMIT', N 'DELETE', N 'HISTORY') AND q3.uid_tree = q.uid_tree) AND EXISTS(229    SELECT TOP 1 1230    FROM jobqueue q4231    WHERE232      q4.uid_tree = q.uid_tree233    GROUP BY q4.uid_tree234    HAVING count(*) > 1)235    INSERT INTO @AffectedQueuesExceptMe(Parameter1)236    SELECT237      DISTINCT dbo.QBM_FCVStringToGUID('',238      q.Queue)239    FROM JobQueue q240      WITH(nolock)241    WHERE242      q.UID_Tree IN(243    SELECT UID_Tree244    FROM @QueueMirror) AND q.Queue <> @queue245    EXEC QBM_PSessionContextSet 'GenProcID',246      @GenProcID247    EXEC QBM_PSessionContextSet 'XUser',248      @XUser249    IF EXISTS(250      SELECT TOP 1 1251      FROM @QueueMirror m252      WHERE253        m.UID2 = '')254    BEGIN255      UPDATE jobqueue256      SET Ready2EXE = N 'HISTORY',257      XDateUpdated = @Xdate,258      XUserUpdated = @XUser259      FROM JobQueue q260      JOIN(261      SELECT m.UID1 AS UID_Tree262      FROM @QueueMirror m263      JOIN JobQueue j264        ON m.UID1 = j.UID_Tree265      WHERE266        m.UID2 = ''267      GROUP BY m.UID1268      HAVING count(*) = sum(CASE269      WHEN j.Ready2EXE = N 'FINISHED' THEN270      1271      ELSE 0272      END)) f273        ON q.UID_Tree = f.UID_Tree274    END275    DELETE @QueueMirror276    WHERE277      UID2 = ''278    UPDATE jobqueue279    SET ready2exe = N 'FALSE',280    ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages,281    @JobqueueMessage),282    XDateUpdated = @Xdate,283    XUserUpdated = @XUser284    FROM Jobqueue q285    JOIN @QueueMirror m286      ON q.uid_tree = m.UID1 AND q.uid_Job <> m.UID2 AND q.ready2exe NOT IN(N 'FINISHED',287    N 'DELETE',288    N 'HISTORY',289    N 'FALSE')290    EXEC QBM_PSessionContextSet 'GenProcID',291      @GenProcID292    EXEC QBM_PSessionContextSet 'XUser',293      @XUser294    UPDATE jobqueue295    SET ready2exe = @NewState,296    ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages,297    @JobqueueMessage),298    XDateUpdated = @Xdate,299    XUserUpdated = @XUser300    FROM jobqueue q301    JOIN @QueueMirror m302      ON q.uid_tree = m.UID1 AND q.uid_Job = m.UID2303    WHERE304      q.Ready2EXE <> @NewState305    EXEC QBM_PSessionContextSet 'GenProcID',306      @GenProcID307    EXEC QBM_PSessionContextSet 'XUser',308      @XUser309    SELECT @ElementCount = COUNT(*)310    FROM @QueueMirror311    SELECT @ElementIndex = 1312    WHILE @ElementIndex <= @ElementCount313    BEGIN314      SELECT315        TOP 1 @uid_tree = bu.UID1,316        @uid_job = bu.UID2317      FROM @QueueMirror bu318      WHERE319        bu.ElementIndex = @ElementIndex320      EXEC QBM_PJobQueueSetSameServer @uid_job321      SELECT @ElementIndex += 1322    END323    IF @UID_QBMServer > ' '324    BEGIN325      EXEC QBM_PQBMServerHasJobService @UID_QBMServer326    END327    SELECT328      @SQLOverviewUpdate = CONCAT('329 update QBMJobqueueOverview330	set IsInvalid = 1331	from QBMJobqueueOverview o 332	where o.IsInvalid = 0333	and o.UID_QBMJobqueueOverview = '''334      ,335      @UID_QBMJobqueueOverview,336      '''337')338    EXEC QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLOverviewUpdate,339      @LockTimeout_ms = 20,340      @MaxWaitTimeForLock_s = 5,341      @ProcIDForJournal = DEFAULT,342      @HandleErrorSilent = 0343    SET lock_timeout 500344    BEGIN TRY345      UPDATE QBMJobqueueOverview346      SET IsInvalid = 1347      FROM QBMJobqueueOverview o348      JOIN @AffectedQueuesExceptMe a349        ON o.UID_QBMJobqueueOverview = a.Parameter1350      WHERE351        o.IsInvalid = 0 AND o.IsInitQueueRunning = 0352    END TRY353    BEGIN CATCH354      SET lock_timeout -1355    END CATCH356    SET lock_timeout -1357  END TRY358  BEGIN CATCH359    EXEC QBM_PSessionErrorAdd DEFAULT360    DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()361    RAISERROR(@Rethrow,362    18,363    1)364      WITH NOWAIT365  END CATCH366  ende:367  SELECT368    @SQLOverviewUpdate = CONCAT('369update QBMJobqueueOverview370	set IsInitQueueRunning = 0371	from QBMJobqueueOverview o 372	where o.UID_QBMJobqueueOverview = '''373    ,374    @UID_QBMJobqueueOverview,375    '''376	 and o.IsInitQueueRunning = 1377')378  EXEC QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLOverviewUpdate,379    @LockTimeout_ms = 20,380    @MaxWaitTimeForLock_s = 5,381    @ProcIDForJournal = DEFAULT,382    @HandleErrorSilent = 0 endWithoutReset:383  EXEC QBM_PSessionContextSet 'GenProcID',384    @GenProcID_R385  EXEC QBM_PSessionContextSet 'XUser',386    @XUser_R387  RETURN388END
Open raw exported source
SQL ยท Raw74 lines
1   create   procedure QBM_PJobQueueInit_i (@queue nvarchar(255), @SessionID varchar(38) = ''   , @SetSessionOnly bit   ) as begin  declare @uid_tree2 varchar(38)  declare @uid_job varchar(38)  declare @SQLcmd nvarchar(max) declare @isMasterSQL int = 0 declare @UID_QBMServer varchar(38) declare @SessionID_DB3 varchar(38) declare @msg nvarchar(1000) declare @GenProcID varchar(38) declare @XUser nvarchar(64) declare @Xdate datetime = getutcdate() declare @UID_QBMJobqueueOverview4 varchar(38) = dbo.QBM_FCVStringToGUID('', @queue) declare @QueueMirror QBM_YCursorBuffer  declare @ElementCount int declare @ElementIndex int declare 5@AffectedQueuesExceptMe QBM_YParameterlist declare @JobqueueMessage nvarchar(1000) declare @NewState nvarchar(16)  declare @SQLOverviewUpdate nvarchar(max6) declare @OverviewUpdateRowcount int declare @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('') declare @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext7('XUser') SET XACT_ABORT OFF BEGIN TRY select @GenProcID = dbo.QBM_FGISessionContext('') select @XUser = dbo.QBM_FGISessionContext('XUser')  if isnull(@XUser8, '') = '' begin select @XUser = left(Object_name(@@procid), 64) exec QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet 'XUser'9, @XUser end   select top 1 @UID_QBMServer = UID_QBMServer , @SessionID_DB = isnull(SessionID, '') from QBMServer where QueueName = @queue if exists (select10 top 1 1 from QBMServerHasServerTag ht where ht.UID_QBMServer = @UID_QBMServer and ht.UID_QBMServerTag = 'QBM-ST-Is07' ) begin select @isMasterSQL = 1 11end if isnull(@UID_QBMServer, '') = '' begin  if dbo.QBM_FGIConfigparmValue('Common\Jobservice\AutoCreateServerFromQueues') > ' ' begin select @UID_QBMServer12 = NEWID()  select @SessionID_DB = @SessionID insert into QBMServer (QueueName, UID_QBMServer, XObjectKey , Ident_Server , XDateInserted, XDateUpdated,13 XUserInserted, XUserUpdated, SessionID  ) select @queue, @UID_QBMServer, dbo.QBM_FCVElementToObjectKey1('QBMServer', 'UID_QBMServer', @UID_QBMServer) 14, case charindex('\', reverse(@queue)) when 0 then @queue else reverse(SUBSTRING(reverse(@queue), 1, charindex('\', reverse(@queue))-1 )) end as Ident_Server15 , GETUTCDATE(), GETUTCDATE(), @XUser, @XUser, @SessionID_DB end else begin select @msg = '#LDS#No server found for the queue {0}.|' + @queue + N'|' raiserror16(@msg, 18, 2) with nowait end end if isnull(@SessionID_DB, '') <> isnull(@SessionID, '') and @SessionID > ' ' begin exec QBM_PSessionContextSet 'GenProcID'17, @GenProcID exec QBM_PSessionContextSet 'XUser', @XUser update QBMServer set SessionID = @SessionID  , XDateUpdated = @Xdate , XUserUpdated = @XUser where18 UID_QBMServer = @UID_QBMServer end if @SetSessionOnly = 1 begin goto endWithoutReset end    select @SQLOverviewUpdate = concat('19update QBMJobqueueOverview 20	set IsInitQueueRunning = 121	from QBMJobqueueOverview o 22	where o.UID_QBMJobqueueOverview = '''23, @UID_QBMJobqueueOverview, '''24	 and o.IsInitQueueRunning = 0' ) exec @OverviewUpdateRowcount = QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLOverviewUpdate25 , @LockTimeout_ms = 20 , @MaxWaitTimeForLock_s = 3 , @ProcIDForJournal = default , @HandleErrorSilent = 0 if @OverviewUpdateRowcount = 0 begin goto endWithoutReset26 end      if  (select top 1 DataOrigin from DialogDatabase d with (readpast) where d.IsMainDatabase = 1 )  <> dbo.QBM_FGIDBDataOrigin() begin select @JobqueueMessage27 = N'status set to FROZEN by reinitializing jobqueue because of wrong DialogDatabase.DataOrigin' select @NewState = 'FROZEN' end else begin select @JobqueueMessage28 = N'status changed by reinitializing jobqueue' select @NewState = 'TRUE' end  exec QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet29 'XUser', @XUser update jobqueue set ready2exe = @NewState , UID_JobSameServer = q.UID_Job , ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages30, @JobqueueMessage)  , XDateUpdated = @Xdate , XUserUpdated = @XUser from JobQueue q join (select UID_Tree, count(*) as CountItems from JobQueue where 31queue = @queue and Ready2EXE in (N'LOADED', N'PROCESSING', N'MISSING') group by UID_Tree having count(*) = 1 ) as x on q.UID_Tree = x.UID_Tree where ready2exe32 in (N'LOADED', N'PROCESSING', N'MISSING')  and not exists (select top 1 1 from JobQueue q3 where q3.Ready2EXE in( N'DELETE', N'HISTORY') and q3.UID_Tree33 = q.UID_Tree )  update JobQueue set Ready2EXE = N'HISTORY' , ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages, N'status set to HISTORY by reinitializing jobqueue because of undefined root job'34 )  , XDateUpdated = @Xdate , XUserUpdated = @XUser from JobQueue q join (select q2.UID_Tree  from JobQueue q2 group by q2.UID_Tree having sum(convert(int35, q2.IsRootJob)) <> 1 ) as x on q.UID_Tree = x.UID_Tree where q.Ready2EXE not in (N'HISTORY', N'DELETE')   insert into @QueueMirror (UID1 , UID2 ) select36 distinct q.uid_tree, dbo.QBM_FGIJobQueueTopJob(q.UID_Tree) from jobqueue q where q.queue = @queue and ( q.ready2exe in (N'LOADED', N'PROCESSING', N'MISSING'37, N'TRUE')  or exists (select top 1 1 from ( select uid_tree , count(z.ready2exe) as CountItems from jobqueue q1 left outer join ( values (N'TRUE') , (38N'LOADED') , (N'PROCESSING') ) as z (Ready2exe) on z.ready2exe = q1.ready2exe group by uid_tree having count(z.ready2exe) = 0 ) as y where y.uid_tree =39 q.uid_tree ) ) and not exists (select top 1 1 from jobqueue q3 where q3.ready2exe in( N'FROZEN', N'OVERLIMIT'  , N'DELETE', N'HISTORY'  ) and q3.uid_tree40 = q.uid_tree )  and exists (select top 1 1 from jobqueue q4 where q4.uid_tree = q.uid_tree group by q4.uid_tree having count(*) > 1 ) insert into @AffectedQueuesExceptMe41(Parameter1) select distinct dbo.QBM_FCVStringToGUID('', q.Queue) from JobQueue q with (nolock) where q.UID_Tree in (select UID_Tree from @QueueMirror 42) and q.Queue <> @queue    exec QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet 'XUser', @XUser  if exists (select top 1 1 from43 @QueueMirror m where m.UID2 = ''  ) begin  update jobqueue set Ready2EXE = N'HISTORY'  , XDateUpdated = @Xdate , XUserUpdated = @XUser from JobQueue q44 join (select m.UID1 as UID_Tree from @QueueMirror m join JobQueue j on m.UID1  = j.UID_Tree where m.UID2 = '' group by m.UID1  having count(*) = sum (case45 when j.Ready2EXE = N'FINISHED' then 1 else 0 end ) ) f on q.UID_Tree = f.UID_Tree end  delete  @QueueMirror where UID2 = ''  update jobqueue set ready2exe46 = N'FALSE' , ErrorMessages = dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages, @JobqueueMessage)  , XDateUpdated = @Xdate , XUserUpdated = @XUser from Jobqueue47 q join @QueueMirror m on q.uid_tree = m.UID1  and q.uid_Job <> m.UID2   and q.ready2exe not in ( N'FINISHED', N'DELETE', N'HISTORY'  , N'FALSE' ) exec48 QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet 'XUser', @XUser update jobqueue set ready2exe = @NewState , ErrorMessages =49 dbo.QBM_FGIJobQueueMessageAdd(ErrorMessages, @JobqueueMessage)  , XDateUpdated = @Xdate , XUserUpdated = @XUser from jobqueue q join @QueueMirror m on50 q.uid_tree = m.UID1  and q.uid_Job = m.UID2   where q.Ready2EXE <> @NewState   exec QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet51 'XUser', @XUser select @ElementCount = COUNT(*) from @QueueMirror select @ElementIndex = 1 while @ElementIndex <= @ElementCount begin select top 1 @uid_tree52 = bu.UID1 , @uid_job = bu.UID2 from @QueueMirror bu where bu.ElementIndex = @ElementIndex exec QBM_PJobQueueSetSameServer @uid_job select @ElementIndex53 += 1 end  if @UID_QBMServer > ' ' begin exec QBM_PQBMServerHasJobService @UID_QBMServer end   select @SQLOverviewUpdate = concat('54 update QBMJobqueueOverview55	set IsInvalid = 156	from QBMJobqueueOverview o 57	where o.IsInvalid = 058	and o.UID_QBMJobqueueOverview = '''59, @UID_QBMJobqueueOverview, '''60' ) exec QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLOverviewUpdate , @LockTimeout_ms = 20 , @MaxWaitTimeForLock_s61 = 5 , @ProcIDForJournal = default , @HandleErrorSilent = 0 set lock_timeout 500 begin Try update QBMJobqueueOverview set IsInvalid = 1 from QBMJobqueueOverview62 o join @AffectedQueuesExceptMe a on o.UID_QBMJobqueueOverview = a.Parameter1 where o.IsInvalid = 0 and o.IsInitQueueRunning = 0 end Try begin catch  set63 lock_timeout -1 end catch set lock_timeout -1 END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow64() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT END CATCH  ende: select @SQLOverviewUpdate = concat('65update QBMJobqueueOverview66	set IsInitQueueRunning = 067	from QBMJobqueueOverview o 68	where o.UID_QBMJobqueueOverview = '''69, @UID_QBMJobqueueOverview, '''70	 and o.IsInitQueueRunning = 171' ) exec QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLOverviewUpdate , @LockTimeout_ms72 = 20 , @MaxWaitTimeForLock_s = 5 , @ProcIDForJournal = default , @HandleErrorSilent = 0 endWithoutReset: exec QBM_PSessionContextSet 'GenProcID', @GenProcID_R73 exec QBM_PSessionContextSet 'XUser', @XUser_R return end 74