Back to OIM Explorer

dbo.QBM_PWorkSchedule

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure. 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

Source: sandbox-db sys.sql_modules

Source size: 3.734 characters

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_…

Complete Source

SQL162 lines
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
SQL · Raw25 lines
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