Back to OIM Explorer

dbo.QBM_PDBQCS_SlotExec

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure. References ChangeLimit

Source: sandbox-db sys.sql_modules

Source size: 11.475 characters

Interpretation

  • Database routine. Review parameters, called procedures, DBQueue inserts, and QBM_PJobCreate helper calls before assuming side effects.
  • ChangeLimit relation detected. Use this with current V10 DBQueue slot execution evidence, not older 9.2-only assumptions.

Verified DBQueue Slot Execution Notes

  • Source catalog entry dbo.QBM_PDBQCS_SlotExec is a non-generated SQL stored procedure from sandbox-db sys.sql_modules.
  • The procedure signature contains @SlotNumber, @UID_Task, @Procedurename, @ChangeLimit, @isBulkenabled, @CountRowsProcessed output, @ChangedElements output, @OverLoadCount output, and @InsertedSomethingInQueue output.
  • The source definition contains ChangeLimit and a temp JobQueue-shaped structure with a MaxInstance int default 0 column.
  • The generated source-index flags show HasChangeLimit=1, HasDBQueueInsertSingle=0, HasDBQueueInsertBulk=0, and HasQbmPJobCreate=0 for this procedure.

Operational meaning: This is part of DBQueue slot execution. Its verified surface is the slot/task execution contract and ChangeLimit-aware processing; use related caller/callee evidence before assuming enqueue or job-generation behavior.

Relations

  • References ChangeLimit

Typed Edges

  • references source dbo.QBM_FCVIntToString source text reference
  • references source dbo.QBM_FCVStringToInt source text reference
  • references source dbo.QBM_FGIDBQueueSlotResetType source text reference
  • references source dbo.QBM_FGISessionContext source text reference
  • references source dbo.QBM_FSQConnectionSettings source text reference
  • references source dbo.QBM_PDBQCS_CurrentMoveSlot source text reference
  • references source dbo.QBM_PDBQCS_SlotRunner source text reference
  • references source dbo.QBM_PDBQueueReplGenProcID source text reference
  • references source dbo.QBM_PJournal source text reference
  • references source dbo.QBM_PSessionContextSet source text reference
  • references source dbo.QBM_PSessionErrorAdd source text reference
  • references source dbo.QBM_PSessionErrorClean source text reference
  • references source dbo.QBM_PTransactionLevelCheck source text reference

Complete Source

SQL464 lines
1CREATE PROCEDURE QBM_PDBQCS_SlotExec(2  @SlotNumber int,3  @UID_Task varchar(38),4  @CountParameter int,5  @Procedurename varchar(30),6  @IsWithoutTransaction BIT,7  @ChangeLimit int,8  @isBulkenabled BIT,9  @CountRowsProcessed int OUTPUT,10  @ChangedElements int OUTPUT,11  @OverLoadCount int OUTPUT,12  @InsertedSomethingInQueue int OUTPUT13)14AS15BEGIN16  DECLARE @Msg nvarchar(1000) = newid()17  DECLARE @MyProcname nvarchar(256) = 'QBM_DBQueueProcess'18  DECLARE @GenProcID varchar(38)19  DECLARE @RunnerResult int20  DECLARE @ExecutionType int = CASE21  WHEN @SlotNumber < 997 THEN22  023  ELSE @SlotNumber24  END25  DECLARE @CountToProcessAfterReplace int,26  @CountReallyProcessed int = 027  DECLARE @SQLCmd nvarchar(max)28  DECLARE @DebugSwitch int = 029  DECLARE @DebugLevel varchar(1) = 'I'30  DECLARE @DebugMessage nvarchar(1000)31  DECLARE @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('')32  DECLARE @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser')33  DECLARE @DeadlockPriority int = -534  DECLARE @ErrorBuffer QBM_YSessionError35  DECLARE @ChangeLimitString varchar(64)36  SET XACT_ABORT OFF37  IF @DebugLevel = 'T'38  BEGIN39    DECLARE @TracePathlength int40    SELECT TOP 1 @TracePathlength = m.PathLength41    FROM QBMDBQueueTaskMetric m42    WHERE43      m.UID_Task = @UID_Task44    DECLARE @TraceMessage nvarchar(max)45    SELECT46      @TraceMessage = CONCAT('QBM_PDBQCS_SlotExec ',47      convert(char(36), @UID_Task),48      ' Pathlength ',49      str(@TracePathlength),50      ' Slot ',51      str(@SlotNumber))52    EXEC QBM_PJournal @TraceMessage,53      @@procid,54    'T',55      @DebugLevel56  END57  BEGIN TRY58    EXEC QBM_PSessionContextSet 'INSERTEDINTODBQUEUE',59    ''60    EXEC QBM_PTransactionLevelCheck 0,61      @@procid,62    'Eintritt muß transaktionsfrei sein'63    EXEC QBM_PSessionErrorClean64    SET deadlock_priority @DeadlockPriority65    SELECT @SQLCmd = dbo.QBM_FSQConnectionSettings()66    EXEC sp_executeSQL @SQLCmd67    EXEC QBM_PSessionContextSet 'OVERLOADREACHED',68    ''69    EXEC QBM_PSessionContextSet 'CHANGELIMITREACHED',70    ''71    EXEC QBM_PSessionContextSet 'CHANGELIMITTIMEFORDELTA',72    ''73    SET nocount74      ON75    EXEC QBM_PSessionContextSet 'GenProcID',76      @GenProcID77    EXEC QBM_PSessionContextSet 'XUser',78      @MyProcname79    IF @SlotNumber <= 99780    BEGIN81      EXEC QBM_PTransactionLevelCheck 0,82        @@procid,83      'point a'84    END85    IF object_id('tempdb..#QBMDeltaInsert') IS NULL86    BEGIN87      CREATE TABLE #QBMDeltaInsert(88        Element varchar(38) collate database_default NOT NULL,89        AssignedElement varchar(138) collate database_default NOT NULL,90        XOrigin int DEFAULT 0,91        XIsInEffect BIT DEFAULT 0,92        NewPK varchar(38) collate database_default NULL,93        GenProcID varchar(38) collate database_default,94        TargetTableView varchar(30) collate database_default,95        ElementColumnView varchar(30) collate database_default,96        AssignedElementColumnView varchar(30) collate database_default,97        index #QBMDeltaInsert1(Element,98        AssignedElement,99        GenProcID),100        index #QBMDeltaInsert2(GenProcID)101      )102      CREATE index #QBMDeltaInsert3103        ON #QBMDeltaInsert(104        AssignedElement105      ) include(Element106    )107  END108  ELSE109  BEGIN110    truncate TABLE #QBMDeltaInsert111  END112  IF object_id('tempdb..#QBMDeltaDelete'113) IS NULL114BEGIN115  CREATE TABLE #QBMDeltaDelete(116    Element varchar(38) collate database_default NOT NULL,117    AssignedElement varchar(138) collate database_default NOT NULL,118    GenProcID varchar(38) collate database_default,119    TargetTableView varchar(30) collate database_default,120    ElementColumnView varchar(30) collate database_default,121    AssignedElementColumnView varchar(30) collate database_default,122    index #QBMDeltaDelete1(Element,123    AssignedElement,124    GenProcID),125    index #QBMDeltaDelete2(GenProcID)126  )127  CREATE index #QBMDeltaDelete3128    ON #QBMDeltaDelete(129    AssignedElement130  ) include(Element131)132END133ELSE134BEGIN135  truncate TABLE #QBMDeltaDelete136END137IF object_id('tempdb..#QBMDeltaQuantity'138) IS NULL139BEGIN140  CREATE TABLE #QBMDeltaQuantity(141    Element varchar(38) collate database_default NOT NULL,142    GenProcID varchar(38) collate database_default PRIMARY KEY NONCLUSTERED(Element)143  )144END145ELSE146BEGIN147  truncate TABLE #QBMDeltaQuantity148END149IF object_id('tempdb..#QBMDeltaOrigin'150) IS NULL151BEGIN152  CREATE TABLE #QBMDeltaOrigin(153    Element varchar(38) collate database_default NOT NULL,154    AssignedElement varchar(138) collate database_default NOT NULL,155    GenProcID varchar(38) collate database_default,156    XOrigin int DEFAULT 0,157    XIsInEffect BIT DEFAULT 0,158    index #QBMDeltaOrigin1(Element,159    AssignedElement,160    GenProcID),161    index #QBMDeltaOrigin2(GenProcID)162  )163  CREATE index #QBMDeltaOrigin3164    ON #QBMDeltaOrigin(165    AssignedElement166  ) include(Element167)168END169ELSE170BEGIN171  truncate TABLE #QBMDeltaOrigin172END173IF object_id('tempdb..#QBMDBQueueTemp'174) IS NULL175BEGIN176  CREATE TABLE #QBMDBQueueTemp(177    UID_Task varchar(38) collate database_default NULL,178    Object varchar(38) collate database_default NULL,179    SubObject varchar(38) collate database_default NULL,180    GenProcID varchar(38) collate database_default NOT NULL,181    index #QBMDBQueueTemp(UID_Task)182  )183END184ELSE185BEGIN186  truncate TABLE #QBMDBQueueTemp187END188IF object_id('tempdb..#JobQueue'189) IS NULL190BEGIN191  CREATE TABLE #JobQueue(192    UID_Job varchar(38) collate database_default NOT NULL,193    UID_JobSameServer varchar(38) collate database_default NULL,194    UID_Tree varchar(38) collate database_default NOT NULL,195    Queue nvarchar(128) collate database_default NOT NULL,196    ComponentClass nvarchar(200) collate database_default NULL,197    ExecutionType nvarchar(16) collate database_default NULL,198    ComponentAssembly nvarchar(255) collate database_default NULL,199    TaskName nvarchar(64) collate database_default NOT NULL,200    ParamIN nvarchar(max) collate database_default NULL,201    Ready2EXE nvarchar(32) collate database_default NOT NULL,202    StartAt datetime NULL,203    XDateInserted datetime NULL,204    XDateUpdated datetime NULL,205    XUserInserted nvarchar(64) collate database_default NULL,206    XUserUpdated nvarchar(64) collate database_default NULL,207    Retries int DEFAULT 0 NULL,208    Priority int DEFAULT 0 NULL,209    DeferOnError BIT DEFAULT 0 NULL,210    MinutesToDefer int DEFAULT 0 NULL,211    UID_JobError varchar(38) collate database_default NULL,212    UID_JobSuccess varchar(38) collate database_default NULL,213    IgnoreErrors BIT DEFAULT 0 NULL,214    MaxInstance int DEFAULT 0 NULL,215    JobChainName nvarchar(255) collate database_default NOT NULL,216    IsSplitOnly BIT DEFAULT 0 NULL,217    WasError BIT DEFAULT 0 NULL,218    ErrorNotify BIT DEFAULT 0 NULL,219    IsRootJob BIT DEFAULT 0 NULL,220    GenProcID varchar(38) collate database_default NOT NULL,221    IsToFreezeOnError BIT DEFAULT 0 NULL,222    BasisObjectKey varchar(138) collate database_default NULL,223    primary key nonCLUSTERED(UID_Job)224  )225END226ELSE227BEGIN228  truncate TABLE #JobQueue229END230IF object_id('tempdb..#QBMElementAffectedByJob'231) IS NULL232BEGIN233  CREATE TABLE #QBMElementAffectedByJob(234    UID_Job varchar(38) collate database_default NOT NULL,235    ObjectKeyAffected varchar(138) collate database_default NOT NULL236  )237END238ELSE239BEGIN240  truncate TABLE #QBMElementAffectedByJob241END242IF @SlotNumber <= 997243BEGIN244  EXEC QBM_PTransactionLevelCheck 0,245    @@procid,246  'point b'247END248EXEC QBM_PDBQueueReplGenProcID @UID_Task,249  @SlotNumber,250  @ExecutionType,251  @CountParameter252SELECT TOP 1 @CountToProcessAfterReplace = COUNT(*253)254FROM QBMDBQueueCurrent cu255  WITH(readpast256)257WHERE258  cu.SlotNumber = @SlotNumber259IF @CountToProcessAfterReplace = 0260BEGIN261  IF @DebugSwitch > 0262  BEGIN263    SELECT264      @DebugMessage = CONCAT(OBJECT_NAME(@@procid),265      ' empty DBQueueCurrent after QBM_PDBQueueReplGenProcID ',266      ' UID_Task = ',267    CASE268      WHEN ISNULL(@UID_Task,269    '') = '' THEN270    ' <empty> '271    ELSE @UID_Task272    END273  )274  EXEC QBM_PJournal @DebugMessage,275    @@procid,276  'D',277    @DebugLevel278END279SELECT @RunnerResult = 1280GOTO ArbeitGetan281END282IF @ExecutionType = 997283BEGIN284  IF EXISTS(285    SELECT TOP 1 1286    FROM DialogDatabase d287    WHERE288      d.UID_CutOffTask > ' '289)290BEGIN291  GOTO ArbeitGetan292END293END294BEGIN TRY295  EXEC QBM_PSessionContextSet 'GenProcID',296    @GenProcID297  EXEC QBM_PSessionContextSet 'XUser',298    @MyProcname299  IF @DebugSwitch > 0300  BEGIN301    print 'Aufruf runner , slot = ' + str(@SlotNumber302  ) + 'task = ' + isnull(@uid_Task,303  '<null>'304)305END306SELECT @ChangeLimitString = dbo.QBM_FCVIntToString(@ChangeLimit307)308EXEC QBM_PSessionContextSet 'CHANGELIMIT',309  @ChangeLimitString310EXEC QBM_PSessionContextSet 'CHANGELIMITREACHED',311''312EXEC QBM_PSessionContextSet 'OVERLOADREACHED',313''314EXEC @RunnerResult = QBM_PDBQCS_SlotRunner @SlotNumber = @SlotNumber,315  @UID_Task = @UID_Task,316  @ProcedureToCall = @Procedurename,317  @IsWithoutTransaction = @IsWithoutTransaction,318  @isBulkenabled = @isBulkenabled,319  @CountReallyProcessed = @CountReallyProcessed OUTPUT320SELECT @CountRowsProcessed = @CountReallyProcessed321SELECT @ChangedElements = CASE @CountRowsProcessed322WHEN 0 THEN3230324ELSE dbo.QBM_FCVStringToInt(dbo.QBM_FGISessionContext('CHANGELIMITREACHED'),3250326)327END328SELECT329  @OverLoadCount = dbo.QBM_FCVStringToInt(dbo.QBM_FGISessionContext('OVERLOADREACHED'),330  0331  )332IF @DebugSwitch > 0333BEGIN334  print 'nach  runner , @RunnerResult =  ' + str(@RunnerResult335)336END337END TRY338BEGIN CATCH339  DELETE @ErrorBuffer340  INSERT INTO @ErrorBuffer(ErrorMessage,341  ErrorSeverity,342  ErrorState,343  ErrorNumber,344  ProcedureName,345  ProcedureLine,346  MessageDate,347  GenProcID,348  RepeatCounter,349  IsReThrow,350  SourceCode351)352SELECT353  CONCAT('Task execution error, not caught by runner ',354  @uid_Task,355  NCHAR(13),356  NCHAR(10),357  ERROR_MESSAGE()358  ),359  18,360  1,361  50000,362  Object_name(@@PROCID363  ),364  ERROR_LINE(365  ),366  GETUTCDATE(367  ),368  NULL,369  0,370  0,371  NULL372EXEC QBM_PSessionErrorAdd @ErrorBuffer373EXEC QBM_PJournal 'SessionError',374  @@procid,375'W',376  @DebugLevel377EXEC QBM_PSessionErrorClean378END CATCH379DECLARE @SlotNumberSource int380DECLARE @SlotNumberTarget int381DECLARE @DBQueueToMove QBM_YDBQCSCurrentToMove382DECLARE @RowsMoved int ArbeitGetan:383IF @RunnerResult = 1384BEGIN385  SELECT @SlotNumberSource = @SlotNumber386  SELECT @SlotnumberTarget = dbo.QBM_FGIDBQueueSlotResetType('Error03'387)388DELETE @DBQueueToMove389INSERT INTO @DBQueueToMove(UID_DialogDBQueue390)391SELECT cul.UID_DialogDBQueue392FROM QBMDBQueueCurrent cul393  WITH(readpast394)395WHERE396  cul.SlotNumber = @SlotNumber397EXEC @RowsMoved = QBM_PDBQCS_CurrentMoveSlot @DBQueueToMove,398  @SlotNumberSource,399  @SlotnumberTarget400END401IF @RunnerResult = -1402BEGIN403  SELECT @SlotNumberSource = @SlotNumber404  SELECT @SlotnumberTarget = dbo.QBM_FGIDBQueueSlotResetType('Error04'405)406DELETE @DBQueueToMove407INSERT INTO @DBQueueToMove(UID_DialogDBQueue408)409SELECT cul.UID_DialogDBQueue410FROM QBMDBQueueCurrent cul411  WITH(readpast412)413WHERE414  cul.SlotNumber = @SlotNumber415EXEC @RowsMoved = QBM_PDBQCS_CurrentMoveSlot @DBQueueToMove,416  @SlotNumberSource,417  @SlotnumberTarget418END419IF EXISTS(420  SELECT TOP 1 1421  FROM QBMDBQueueCurrent cu422  WITH(readpast)423WHERE424  cu.SlotNumber = @SlotNumber425)426BEGIN427  SELECT @SlotNumberSource = @SlotNumber428  SELECT @SlotnumberTarget = dbo.QBM_FGIDBQueueSlotResetType('Garbage02'429)430DELETE @DBQueueToMove431INSERT INTO @DBQueueToMove(UID_DialogDBQueue432)433SELECT cul.UID_DialogDBQueue434FROM QBMDBQueueCurrent cul435  WITH(readpast436)437WHERE438  cul.SlotNumber = @SlotNumber439EXEC @RowsMoved = QBM_PDBQCS_CurrentMoveSlot @DBQueueToMove,440  @SlotNumberSource,441  @SlotnumberTarget442END443EXEC QBM_PSessionErrorClean444END TRY445BEGIN CATCH446  EXEC QBM_PSessionErrorAdd DEFAULT447  RAISERROR('',448  18,449  1450)451  WITH NOWAIT452END CATCH453ende: endLabel: truncate TABLE #QBMDeltaInsert truncate TABLE #QBMDeltaDelete truncate TABLE #QBMDeltaQuantity truncate TABLE #QBMDeltaOrigin454truncate TABLE #QBMDBQueueTemp truncate TABLE #JobQueue truncate TABLE #QBMElementAffectedByJob455SELECT456  @InsertedSomethingInQueue = dbo.QBM_FCVStringToInt(dbo.QBM_FGISessionContext('INSERTEDINTODBQUEUE'),457  0458  )459EXEC QBM_PSessionContextSet 'GenProcID',460  @GenProcID_R461EXEC QBM_PSessionContextSet 'XUser',462  @XUser_R463RETURN464END
Open raw exported source
SQL · Raw74 lines
1   create   procedure QBM_PDBQCS_SlotExec (@SlotNumber int , @UID_Task varchar(38)  , @CountParameter int  , @Procedurename varchar(30) , @IsWithoutTransaction2 bit   , @ChangeLimit int , @isBulkenabled bit , @CountRowsProcessed int output   , @ChangedElements int output    , @OverLoadCount int output    , @InsertedSomethingInQueue3 int output   ) as begin declare @Msg nvarchar(1000) = newid() declare @MyProcname nvarchar(256) = 'QBM_DBQueueProcess'  declare @GenProcID varchar(38)4 declare @RunnerResult int    declare @ExecutionType int  = case when @SlotNumber < 997 then 0 else @SlotNumber end declare @CountToProcessAfterReplace5 int , @CountReallyProcessed int = 0 declare @SQLCmd nvarchar(max) declare @DebugSwitch int = 0 declare @DebugLevel varchar(1) = 'I' declare @DebugMessage6 nvarchar(1000) declare @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('') declare @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser') declare7 @DeadlockPriority int = -5  declare @ErrorBuffer QBM_YSessionError declare @ChangeLimitString varchar(64)  SET XACT_ABORT OFF if @DebugLevel = 'T' begin8 declare @TracePathlength int select top 1 @TracePathlength = m.PathLength from QBMDBQueueTaskMetric m where m.UID_Task = @UID_Task declare @TraceMessage9 nvarchar(max) select @TraceMessage = concat('QBM_PDBQCS_SlotExec ', convert(char(36), @UID_Task) , ' Pathlength ', str(@TracePathlength) , ' Slot ' , 10str(@SlotNumber) ) exec QBM_PJournal @TraceMessage, @@procid, 'T', @DebugLevel end BEGIN TRY exec QBM_PSessionContextSet 'INSERTEDINTODBQUEUE', '' exec11 QBM_PTransactionLevelCheck 0, @@procid, 'Eintritt muß transaktionsfrei sein' exec QBM_PSessionErrorClean   set deadlock_priority @DeadlockPriority select12 @SQLCmd = dbo.QBM_FSQConnectionSettings() exec sp_executeSQL @SQLCmd exec QBM_PSessionContextSet 'OVERLOADREACHED', '' exec QBM_PSessionContextSet 'CHANGELIMITREACHED'13, '' exec QBM_PSessionContextSet 'CHANGELIMITTIMEFORDELTA', ''  set nocount on exec QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet14 'XUser', @MyProcname if @SlotNumber <= 997 begin  exec QBM_PTransactionLevelCheck 0, @@procid, 'point a' end  if object_id('tempdb..#QBMDeltaInsert') 15is null begin CREATE TABLE #QBMDeltaInsert ( Element varchar(38) collate database_default not null , AssignedElement varchar(138) collate database_default16 not null , XOrigin int DEFAULT 0 , XIsInEffect bit default 0 , NewPK varchar(38) collate database_default null , GenProcID varchar(38) collate database_default17  , TargetTableView varchar(30) collate database_default , ElementColumnView varchar(30) collate database_default , AssignedElementColumnView varchar(3018) collate database_default , index #QBMDeltaInsert1 (Element, AssignedElement, GenProcID ) , index #QBMDeltaInsert2 (GenProcID ) ) create index #QBMDeltaInsert319 on #QBMDeltaInsert(AssignedElement ) include (Element) end else begin truncate table #QBMDeltaInsert end if object_id('tempdb..#QBMDeltaDelete') is null20 begin CREATE TABLE #QBMDeltaDelete ( Element varchar(38) collate database_default not null , AssignedElement varchar(138) collate database_default not21 null , GenProcID varchar(38) collate database_default  , TargetTableView varchar(30) collate database_default , ElementColumnView varchar(30) collate 22database_default , AssignedElementColumnView varchar(30) collate database_default , index #QBMDeltaDelete1 (Element, AssignedElement, GenProcID) , index23 #QBMDeltaDelete2 (GenProcID) ) create index #QBMDeltaDelete3 on #QBMDeltaDelete(AssignedElement ) include (Element) end else begin truncate table #QBMDeltaDelete24 end if object_id('tempdb..#QBMDeltaQuantity') is null begin CREATE TABLE #QBMDeltaQuantity ( Element  varchar(38) collate database_default not null , 25GenProcID varchar(38) collate database_default PRIMARY KEY NONCLUSTERED (Element) ) end else begin truncate table #QBMDeltaQuantity end if object_id('tempdb..#QBMDeltaOrigin'26) is null begin CREATE TABLE #QBMDeltaOrigin ( Element varchar(38) collate database_default not null , AssignedElement varchar(138) collate database_default27 not null , GenProcID varchar(38) collate database_default , XOrigin int DEFAULT 0 , XIsInEffect bit default 0 , index #QBMDeltaOrigin1 (Element, AssignedElement28, GenProcID) , index #QBMDeltaOrigin2 (GenProcID) ) create index #QBMDeltaOrigin3 on #QBMDeltaOrigin(AssignedElement ) include (Element) end else begin29 truncate table #QBMDeltaOrigin end if object_id('tempdb..#QBMDBQueueTemp') is null begin   Create Table #QBMDBQueueTemp ( UID_Task varchar(38) collate30 database_default NULL , Object varchar(38) collate database_default NULL , SubObject varchar(38) collate database_default NULL , GenProcID varchar(38)31 collate database_default NOT NULL , index #QBMDBQueueTemp(UID_Task ) ) end else begin truncate table #QBMDBQueueTemp end if object_id('tempdb..#JobQueue'32) is null begin  Create Table #JobQueue( UID_Job varchar(38) collate database_default NOT NULL , UID_JobSameServer varchar(38) collate database_default33 NULL , UID_Tree varchar(38) collate database_default NOT NULL , Queue nvarchar(128) collate database_default NOT NULL , ComponentClass nvarchar(200) collate34 database_default NULL , ExecutionType nvarchar(16) collate database_default NULL , ComponentAssembly nvarchar(255) collate database_default NULL , TaskName35 nvarchar(64) collate database_default NOT NULL , ParamIN nvarchar(max) collate database_default NULL , Ready2EXE nvarchar(32) collate database_default36 NOT NULL , StartAt datetime NULL , XDateInserted datetime NULL , XDateUpdated datetime NULL , XUserInserted nvarchar(64) collate database_default NULL37 , XUserUpdated nvarchar(64) collate database_default NULL , Retries int default 0 NULL , Priority int default 0 NULL , DeferOnError bit default 0 NULL38 , MinutesToDefer int default 0 NULL , UID_JobError varchar(38) collate database_default NULL , UID_JobSuccess varchar(38) collate database_default NULL39 , IgnoreErrors bit default 0 NULL , MaxInstance int default 0 NULL , JobChainName nvarchar(255) collate database_default NOT NULL  , IsSplitOnly bit default40 0 NULL , WasError bit default 0 NULL , ErrorNotify bit default 0 NULL          , IsRootJob bit default 0 NULL , GenProcID varchar(38) collate database_default41 NOT NULL  , IsToFreezeOnError bit default 0 NULL   , BasisObjectKey varchar(138) collate database_default NULL      , primary key nonCLUSTERED (UID_Job42) ) end else begin truncate table #JobQueue end if object_id('tempdb..#QBMElementAffectedByJob') is null begin Create Table #QBMElementAffectedByJob( UID_Job43 varchar(38) collate database_default NOT NULL , ObjectKeyAffected varchar(138) collate database_default NOT NULL ) end else begin truncate table #QBMElementAffectedByJob44 end  if @SlotNumber <= 997 begin  exec QBM_PTransactionLevelCheck 0, @@procid, 'point b' end exec QBM_PDBQueueReplGenProcID @UID_Task, @SlotNumber, @ExecutionType45, @CountParameter select top 1 @CountToProcessAfterReplace = COUNT(*) from QBMDBQueueCurrent cu with (readpast) where cu.SlotNumber = @SlotNumber if @CountToProcessAfterReplace46 = 0 begin if @DebugSwitch > 0 begin select @DebugMessage = CONCAT( OBJECT_NAME(@@procid) , ' empty DBQueueCurrent after QBM_PDBQueueReplGenProcID ' , 47' UID_Task = ', case when ISNULL(@UID_Task, '') = '' then ' <empty> ' else @UID_Task end ) exec QBM_PJournal @DebugMessage, @@procid, 'D', @DebugLevel 48end select @RunnerResult = 1  goto ArbeitGetan end     if @ExecutionType = 997 begin   if exists (select top 1 1 from DialogDatabase d where d.UID_CutOffTask49 > ' ' ) begin goto ArbeitGetan end end  BEGIN TRY  exec QBM_PSessionContextSet 'GenProcID', @GenProcID exec QBM_PSessionContextSet 'XUser', @MyProcname50  if @DebugSwitch > 0 begin print 'Aufruf runner , slot = ' + str(@SlotNumber) + 'task = ' + isnull(@uid_Task, '<null>') end  select @ChangeLimitString51 = dbo.QBM_FCVIntToString(@ChangeLimit) exec QBM_PSessionContextSet 'CHANGELIMIT', @ChangeLimitString exec QBM_PSessionContextSet 'CHANGELIMITREACHED',52 '' exec QBM_PSessionContextSet 'OVERLOADREACHED', '' exec @RunnerResult = QBM_PDBQCS_SlotRunner @SlotNumber = @SlotNumber  , @UID_Task = @UID_Task , @ProcedureToCall53 = @Procedurename , @IsWithoutTransaction = @IsWithoutTransaction  , @isBulkenabled = @isBulkenabled , @CountReallyProcessed = @CountReallyProcessed output54    select @CountRowsProcessed = @CountReallyProcessed  select @ChangedElements = case @CountRowsProcessed when 0 then 0  else dbo.QBM_FCVStringToInt(dbo.QBM_FGISessionContext55('CHANGELIMITREACHED'), 0) end select @OverLoadCount = dbo.QBM_FCVStringToInt(dbo.QBM_FGISessionContext('OVERLOADREACHED'), 0) if @DebugSwitch > 0 begin56 print 'nach  runner , @RunnerResult =  ' + str(@RunnerResult) end  END TRY BEGIN CATCH  delete @ErrorBuffer insert into @ErrorBuffer (ErrorMessage, ErrorSeverity57, ErrorState, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode) select concat('Task execution error, not caught by runner '58 , @uid_Task , NCHAR(13) , NCHAR(10) , ERROR_MESSAGE()) ,18, 1, 50000 , Object_name(@@PROCID), ERROR_LINE(), GETUTCDATE() , null, 0, 0, null exec QBM_PSessionErrorAdd59 @ErrorBuffer   exec QBM_PJournal 'SessionError', @@procid, 'W', @DebugLevel exec QBM_PSessionErrorClean END CATCH    declare @SlotNumberSource int declare60 @SlotNumberTarget int declare @DBQueueToMove QBM_YDBQCSCurrentToMove declare @RowsMoved int ArbeitGetan:    if @RunnerResult = 1  begin  select @SlotNumberSource61 = @SlotNumber select @SlotnumberTarget = dbo.QBM_FGIDBQueueSlotResetType('Error03') delete @DBQueueToMove  insert into @DBQueueToMove(UID_DialogDBQueue62) select cul.UID_DialogDBQueue from QBMDBQueueCurrent cul with (readpast) where cul.SlotNumber = @SlotNumber exec @RowsMoved = QBM_PDBQCS_CurrentMoveSlot63 @DBQueueToMove, @SlotNumberSource, @SlotnumberTarget               end  if @RunnerResult = -1  begin  select @SlotNumberSource = @SlotNumber select @SlotnumberTarget64 = dbo.QBM_FGIDBQueueSlotResetType('Error04') delete @DBQueueToMove  insert into @DBQueueToMove(UID_DialogDBQueue) select cul.UID_DialogDBQueue from QBMDBQueueCurrent65 cul with (readpast) where cul.SlotNumber = @SlotNumber exec @RowsMoved = QBM_PDBQCS_CurrentMoveSlot @DBQueueToMove, @SlotNumberSource, @SlotnumberTarget66               end  if exists (select top 1 1 from QBMDBQueueCurrent cu with (readpast) where cu.SlotNumber = @SlotNumber ) begin  select @SlotNumberSource67 = @SlotNumber select @SlotnumberTarget = dbo.QBM_FGIDBQueueSlotResetType('Garbage02') delete @DBQueueToMove  insert into @DBQueueToMove(UID_DialogDBQueue68) select cul.UID_DialogDBQueue from QBMDBQueueCurrent cul with (readpast) where cul.SlotNumber = @SlotNumber exec @RowsMoved = QBM_PDBQCS_CurrentMoveSlot69 @DBQueueToMove, @SlotNumberSource, @SlotnumberTarget               end exec QBM_PSessionErrorClean END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default70 RAISERROR ('', 18, 1) WITH NOWAIT END CATCH ende:  endLabel:  truncate table #QBMDeltaInsert truncate table #QBMDeltaDelete truncate table #QBMDeltaQuantity71 truncate table #QBMDeltaOrigin truncate table #QBMDBQueueTemp truncate table #JobQueue truncate table #QBMElementAffectedByJob select @InsertedSomethingInQueue72 = dbo.QBM_FCVStringToInt(dbo.QBM_FGISessionContext( 'INSERTEDINTODBQUEUE'), 0)  exec QBM_PSessionContextSet 'GenProcID', @GenProcID_R exec QBM_PSessionContextSet73 'XUser', @XUser_R return end 74