dbo.QBM_PDBQCS_SlotExec
Stored ProcedureSQL_STORED_PROCEDURESandbox DB
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_SlotExecis a non-generated SQL stored procedure fromsandbox-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
ChangeLimitand a temp JobQueue-shaped structure with aMaxInstance int default 0column. - The generated source-index flags show
HasChangeLimit=1,HasDBQueueInsertSingle=0,HasDBQueueInsertBulk=0, andHasQbmPJobCreate=0for 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
References
- dbo.QBM_FCVIntToString
- dbo.QBM_FCVStringToInt
- dbo.QBM_FGIDBQueueSlotResetType
- dbo.QBM_FGISessionContext
- dbo.QBM_FSQConnectionSettings
- dbo.QBM_PDBQCS_CurrentMoveSlot
- dbo.QBM_PDBQCS_SlotRunner
- dbo.QBM_PDBQueueReplGenProcID
- dbo.QBM_PJournal
- dbo.QBM_PSessionContextSet
- dbo.QBM_PSessionErrorAdd
- dbo.QBM_PSessionErrorClean
- dbo.QBM_PTransactionLevelCheck
Referenced By
- No direct source references extracted.
Complete Source
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
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