dbo.QBM_PWorkSchedule
Stored ProcedureSQL_STORED_PROCEDURESandbox DB
Interpretation
- Database routine. Review parameters, called procedures, DBQueue inserts, and QBM_PJobCreate helper calls before assuming side effects.
- DBQueue relation detected. Follow the task procedure and referenced-by list for async processing.
Relations
- Single DBQueue insert -> ) , ( at line 6
- Single DBQueue insert -> QBM-K-Commonrecalculate / QBM_ZRecalculate at line 6
- Single DBQueue insert -> QBM-K-GUIDReplaceReady / QBM_ZGUIDReplaceReady at line 6
- Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 6
- Single DBQueue insert -> QBM-K-Commonrecalculate / QBM_ZRecalculate at line 18
- Single DBQueue insert -> QBM-K-GUIDReplaceReady / QBM_ZGUIDReplaceReady at line 18
- Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 18
- Single DBQueue insert -> QBM-K-GUIDReplaceReady / QBM_ZGUIDReplaceReady at line 19
- Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 19
- Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 20
- References QBM_PDBQueueInsert_Single
Typed Edges
- queues DBQueue task ) , ( at line 6 Single DBQueue insert -> ) , ( at line 6
- queues DBQueue task QBM_ZRecalculate at line 6 Single DBQueue insert -> QBM-K-Commonrecalculate / QBM_ZRecalculate at line 6
- queues DBQueue task QBM_ZGUIDReplaceReady at line 6 Single DBQueue insert -> QBM-K-GUIDReplaceReady / QBM_ZGUIDReplaceReady at line 6
- queues DBQueue task QBM_ZDeferredOperationExecute at line 6 Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 6
- queues DBQueue task QBM_ZRecalculate at line 18 Single DBQueue insert -> QBM-K-Commonrecalculate / QBM_ZRecalculate at line 18
- queues DBQueue task QBM_ZGUIDReplaceReady at line 18 Single DBQueue insert -> QBM-K-GUIDReplaceReady / QBM_ZGUIDReplaceReady at line 18
- queues DBQueue task QBM_ZDeferredOperationExecute at line 18 Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 18
- queues DBQueue task QBM_ZGUIDReplaceReady at line 19 Single DBQueue insert -> QBM-K-GUIDReplaceReady / QBM_ZGUIDReplaceReady at line 19
- queues DBQueue task QBM_ZDeferredOperationExecute at line 19 Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 19
- queues DBQueue task QBM_ZDeferredOperationExecute at line 20 Single DBQueue insert -> QBM-K-DeferredOperationExecute / QBM_ZDeferredOperationExecute at line 20
- references source dbo.QBM_FGIDBServerIsActive source text reference
- references source dbo.QBM_FGISessionContext source text reference
- references source dbo.QBM_FGISessionErrorIsDeadlock source text reference
- references source dbo.QBM_FGISessionErrorRethrow source text reference
- references source dbo.QBM_PDBQueueAgentInfoSet source text reference
- references source dbo.QBM_PDBQueueInsert_Single source text reference
- references source dbo.QBM_PJournal source text reference
- references source dbo.QBM_PScheduleCheck 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
- queues DBQueue task QBM-K-Commonrecalculate -> QBM_ZRecalculate QBM_PDBQueueInsert_Single 'QBM-K-Commonrecalculate' , 'QBM-K-TableReplace', '', @GenProcID exec QBM_PDBQueueInsert_Single 'QBM-K-GUIDReplaceReady', '', '', @GenProcID end end end if exists (select top 1 1 from dialogdeferredoperation where…
- queues DBQueue task QBM-K-GUIDReplaceReady -> QBM_ZGUIDReplaceReady QBM_PDBQueueInsert_Single 'QBM-K-GUIDReplaceReady', '', '', @GenProcID end end end if exists (select top 1 1 from dialogdeferredoperation where TargetDate < GetUTCDate() and isnull(xtouched, '') <> 'X' ) begin exec QBM_PDBQueueInsert_Singl…
- queues DBQueue task QBM-K-DeferredOperationExecute -> QBM_ZDeferredOperationExecute QBM_PDBQueueInsert_Single 'QBM-K-DeferredOperationExecute' , null, null, @GenprocID end END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default if dbo.QBM_FGISessionErrorIsDeadlock(default) = 0 begin declare @Rethrow varchar(1000) = dbo.QBM_…
References
- dbo.QBM_FGIDBServerIsActive
- dbo.QBM_FGISessionContext
- dbo.QBM_FGISessionErrorIsDeadlock
- dbo.QBM_FGISessionErrorRethrow
- dbo.QBM_PDBQueueAgentInfoSet
- dbo.QBM_PDBQueueInsert_Single
- dbo.QBM_PJournal
- dbo.QBM_PScheduleCheck
- dbo.QBM_PSessionContextSet
- dbo.QBM_PSessionErrorAdd
- dbo.QBM_PSessionErrorClean
- dbo.QBM_PTransactionLevelCheck
Referenced By
- No direct source references extracted.
Complete Source
1CREATE PROCEDURE QBM_PWorkSchedule2AS3BEGIN4 DECLARE @procname nvarchar(256) = object_name(@@procid)5 DECLARE @GenProcID varchar(38) = newid()6 DECLARE @Xuser nvarchar(64) = object_name(@@procid)7 DECLARE @SingleUserProcess int8 DECLARE @SingleUserStart datetime9 DECLARE @SingleUserReturnCode int10 DECLARE @SecondsUntilResetSingleUser int = 60011 DECLARE @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('')12 DECLARE @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser')13 DECLARE @DebugLevel varchar(1) = 'W'14 SET XACT_ABORT OFF15 BEGIN TRY16 IF 0 =(17 SELECT18 min(sign(len(ISNULL(p.name, '')))) AS StartBisHierGeschafft19 FROM(20 VALUES('QBMModuleDef'),('DialogDatabase'),('DialogDBQueue'),('DialogDeferredOperation'),('QBM_FGIDBServerIsActive'),21 ('QBM_PSessionErrorAdd'),('QBM_FGISessionErrorIsDeadlock'),('QBM_PDBQueueInsert_Single'),('QBM_PSessionContextSet'),22 ('QBMDBQueueCurrent'),('QBMGuidReplace')) AS v(ProcedureName)23 LEFT24 OUTER25 JOIN sys.objects p26 WITH(readpast)27 ON p.name = v.ProcedureName)28 BEGIN29 GOTO EndLabel30 END31 EXEC QBM_PDBQueueAgentInfoSet @procname32 EXEC QBM_PTransactionLevelCheck 0,33 @@procid,34 'at start'35 SET deadlock_priority 036 SET lock_timeout 500037 SELECT38 TOP 1 @SingleUserProcess = d.SingleUserProcess,39 @SingleUserStart = d.SingleUserStart40 FROM DialogDatabase d41 WITH(readpast)42 WHERE43 d.IsMainDatabase = 144 IF @SingleUserProcess IS NULL45 BEGIN46 SELECT @SingleUserProcess = 047 END48 IF @SingleUserProcess <> 049 BEGIN50 IF @SingleUserProcess > 051 BEGIN52 SELECT53 @SingleUserReturnCode = dbo.QBM_FGIDBServerIsActive(@SingleUserProcess,54 @SecondsUntilResetSingleUser)55 IF @SingleUserReturnCode IN(-1,56 -2)57 BEGIN58 UPDATE DialogDatabase59 SET SingleUserProcess = 0,60 SingleUserStart = NULL61 WHERE62 IsMainDatabase = 163 END64 IF @SingleUserReturnCode IN(0)65 BEGIN66 IF DATEADD(ss,67 @SecondsUntilResetSingleUser,68 @SingleUserStart) < getutcdate()69 BEGIN70 UPDATE DialogDatabase71 SET SingleUserProcess = 0,72 SingleUserStart = NULL73 WHERE74 IsMainDatabase = 175 END76 END77 END78 END79 ELSE80 BEGIN81 EXEC QBM_PSessionContextSet 'GenProcID',82 @GenProcID83 EXEC QBM_PSessionContextSet 'XUser',84 @XUser85 EXEC QBM_PScheduleCheck86 IF NOT EXISTS(87 SELECT TOP 1 188 FROM QBMDBQueueCurrent cu89 WITH(nolock)90 WHERE91 cu.UID_Task IN('QBM-K-TableReload', 'QBM-K-TableReplace') AND cu.SlotNumber > 0) AND EXISTS(92 SELECT TOP 1 193 FROM QBMGuidReplace r94 JOIN DialogDatabase d95 ON r.UID_Database = d.UID_Database96 WHERE97 d.IsMainDatabase = 1)98 BEGIN99 IF NOT EXISTS(100 SELECT TOP 1 1101 FROM QBMDBQueueCurrent cu102 WITH(nolock)103 WHERE104 cu.SlotNumber <> 0 AND cu.UID_Task IN('QBM-K-TableReload', 'QBM-K-TableReplace')) AND NOT EXISTS(105 SELECT TOP 1 1106 FROM DialogDBQueue q107 WITH(nolock)108 WHERE109 q.UID_Task IN('QBM-K-TableReload', 'QBM-K-TableReplace', 'QBM-K-GUIDReplaceReady'))110 BEGIN111 EXEC QBM_PDBQueueInsert_Single 'QBM-K-Commonrecalculate',112 'QBM-K-TableReplace',113 '',114 @GenProcID115 EXEC QBM_PDBQueueInsert_Single 'QBM-K-GUIDReplaceReady',116 '',117 '',118 @GenProcID119 END120 END121 END122 IF EXISTS(123 SELECT TOP 1 1124 FROM dialogdeferredoperation125 WHERE126 TargetDate < GetUTCDate() AND isnull(xtouched, '') <> 'X')127 BEGIN128 EXEC QBM_PDBQueueInsert_Single 'QBM-K-DeferredOperationExecute',129 NULL,130 NULL,131 @GenprocID132 END133 END TRY134 BEGIN CATCH135 EXEC QBM_PSessionErrorAdd DEFAULT136 IF dbo.QBM_FGISessionErrorIsDeadlock(DEFAULT) = 0137 BEGIN138 DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()139 RAISERROR(@Rethrow,140 18,141 1)142 WITH NOWAIT143 END144 ELSE145 BEGIN146 EXEC QBM_PJournal 'SessionError',147 @@procid,148 'I',149 @DebugLevel150 EXEC QBM_PSessionErrorClean151 END152 END CATCH153 endLabel:154 EXEC QBM_PSessionContextSet 'GenProcID',155 @GenProcID_R156 EXEC QBM_PSessionContextSet 'XUser',157 @XUser_R158 EXEC QBM_PDBQueueAgentInfoSet @procname,159 1160 SET lock_timeout -1161 RETURN162END
Open raw exported source
1 create procedure QBM_PWorkSchedule as begin declare @procname nvarchar(256) = object_name(@@procid) declare @GenProcID varchar(38) = newid()2 declare @Xuser nvarchar(64) = object_name(@@procid) declare @SingleUserProcess int declare @SingleUserStart datetime declare @SingleUserReturnCode int3 declare @SecondsUntilResetSingleUser int = 600 declare @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('') declare @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext4('XUser') declare @DebugLevel varchar(1) = 'W' SET XACT_ABORT OFF BEGIN TRY if 0 = (select min(sign(len(ISNULL(p.name, '')))) as StartBisHierGeschafft5 from ( values ('QBMModuleDef') , ('DialogDatabase') , ('DialogDBQueue') , ('DialogDeferredOperation') , ('QBM_FGIDBServerIsActive') , ('QBM_PSessionErrorAdd'6) , ('QBM_FGISessionErrorIsDeadlock') , ('QBM_PDBQueueInsert_Single') , ('QBM_PSessionContextSet') , ('QBMDBQueueCurrent') , ('QBMGuidReplace') )7 as v (ProcedureName) left outer join sys.objects p with (readpast) on p.name = v.ProcedureName ) begin goto EndLabel end exec QBM_PDBQueueAgentInfoSet8 @procname exec QBM_PTransactionLevelCheck 0, @@procid, 'at start' set deadlock_priority 0 set lock_timeout 5000 select top 1 @SingleUserProcess = d.SingleUserProcess9 , @SingleUserStart = d.SingleUserStart from DialogDatabase d with (readpast) where d.IsMainDatabase = 1 if @SingleUserProcess is null begin select @SingleUserProcess10 = 0 end if @SingleUserProcess <> 0 begin if @SingleUserProcess > 0 begin select @SingleUserReturnCode = dbo.QBM_FGIDBServerIsActive(@SingleUserProcess11, @SecondsUntilResetSingleUser) if @SingleUserReturnCode in (-1, -2) begin update DialogDatabase set SingleUserProcess = 0 , SingleUserStart = null where12 IsMainDatabase = 1 end if @SingleUserReturnCode in (0) begin if DATEADD(ss, @SecondsUntilResetSingleUser, @SingleUserStart) < getutcdate() begin update13 DialogDatabase set SingleUserProcess = 0 , SingleUserStart = null where IsMainDatabase = 1 end end end end else begin exec QBM_PSessionContextSet 'GenProcID'14, @GenProcID exec QBM_PSessionContextSet 'XUser', @XUser exec QBM_PScheduleCheck if not exists (select top 1 1 from QBMDBQueueCurrent cu with (nolock15) where cu.UID_Task in ( 'QBM-K-TableReload' , 'QBM-K-TableReplace' ) and cu.SlotNumber > 0 ) and exists (select top 1 1 from QBMGuidReplace r join 16DialogDatabase d on r.UID_Database = d.UID_Database where d.IsMainDatabase = 1 ) begin if not exists (select top 1 1 from QBMDBQueueCurrent cu with (nolock17) where cu.SlotNumber <> 0 and cu.UID_Task in ('QBM-K-TableReload' , 'QBM-K-TableReplace' ) ) and not exists (select top 1 1 from DialogDBQueue q with 18(nolock) where q.UID_Task in ('QBM-K-TableReload' , 'QBM-K-TableReplace', 'QBM-K-GUIDReplaceReady' ) ) begin exec QBM_PDBQueueInsert_Single 'QBM-K-Commonrecalculate'19, 'QBM-K-TableReplace', '', @GenProcID exec QBM_PDBQueueInsert_Single 'QBM-K-GUIDReplaceReady', '', '', @GenProcID end end end if exists (select top 201 1 from dialogdeferredoperation where TargetDate < GetUTCDate() and isnull(xtouched, '') <> 'X' ) begin exec QBM_PDBQueueInsert_Single 'QBM-K-DeferredOperationExecute'21 , null, null, @GenprocID end END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default if dbo.QBM_FGISessionErrorIsDeadlock(default) = 0 begin declare @Rethrow22 varchar(1000) = dbo.QBM_FGISessionErrorRethrow() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT end else begin exec QBM_PJournal 'SessionError', @@procid, 'I'23, @DebugLevel exec QBM_PSessionErrorClean end END CATCH endLabel: exec QBM_PSessionContextSet 'GenProcID', @GenProcID_R exec QBM_PSessionContextSet 'XUser'24, @XUser_R exec QBM_PDBQueueAgentInfoSet @procname, 1 set lock_timeout -1 return end 25