dbo.QBM_PJobQueueInit
Stored ProcedureSQL_STORED_PROCEDURESandbox DB
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_FGISessionErrorRethrow source text reference
- references source dbo.QBM_PJobQueueInit_i source text reference
- references source dbo.QBM_PSessionErrorAdd source text reference
- references source dbo.QBM_PWaitForSeconds source text reference
Complete Source
1CREATE PROCEDURE QBM_PJobQueueInit(2 @queue nvarchar(255),3 @SessionID varchar(38) = '',4 @MaxWaitTimeForLock_s int = 405)6AS7BEGIN8 DECLARE @TestBetrieb BIT = 09 DECLARE @RCAppLockRequest int = 010 DECLARE @MyName nvarchar(64) = object_name(@@procid)11 DECLARE @WartenEinVersuch_ms int = 100012 DECLARE @WartenBisWiederholung_s int = 113 DECLARE @Gestartet datetime = getutcdate()14 DECLARE @HabeInitialisiert int = 115 SET XACT_ABORT OFF16 BEGIN17 TRANSACTION18 BEGIN TRY19 WirVersuchen:20 IF datediff(ss,21 @Gestartet,22 getutcdate()) > @MaxWaitTimeForLock_s23 BEGIN24 SELECT @HabeInitialisiert = -125 EXEC QBM_PJobQueueInit_i @Queue,26 @SessionID,27 @SetSessionOnly = 128 GOTO endlabel29 END30 IF NOT EXISTS(31 SELECT TOP 1 132 FROM JobQueue q33 WITH(readpast)34 WHERE35 q.Ready2EXE IN(N 'LOADED', N 'PROCESSING', N 'MISSING', 'FINISHED') AND q.Queue = @queue) AND @TestBetrieb = 036 BEGIN37 EXEC QBM_PJobQueueInit_i @Queue,38 @SessionID,39 @SetSessionOnly = 140 GOTO endLabel41 END42 EXEC @RCAppLockRequest = sys.sp_getapplock @Resource = @MyName,43 @LockMode= 'Exclusive',44 @LockOwner= 'Transaction',45 @LockTimeout = @WartenEinVersuch_ms46 IF @RCAppLockRequest < 047 BEGIN48 EXEC QBM_PWaitForSeconds @WartenBisWiederholung_s49 GOTO wirVersuchen50 END51 EXEC QBM_PJobQueueInit_i @Queue,52 @SessionID,53 @SetSessionOnly = 054 END TRY55 BEGIN CATCH56 SELECT @HabeInitialisiert = -157 EXEC QBM_PSessionErrorAdd DEFAULT58 DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()59 RAISERROR(@Rethrow,60 18,61 1)62 WITH NOWAIT63 END CATCH64 EndeMitRelease:65 EXEC sp_releaseapplock @Resource = @MyName,66 @LockOwner = 'Transaction' EndLabel:67 IF @@TRANCOUNT > 068 BEGIN69 COMMIT TRANSACTION70 END71 RETURN(@HabeInitialisiert)72 END
Open raw exported source
1 create procedure QBM_PJobQueueInit (@queue nvarchar(255) , @SessionID varchar(38) = '' , @MaxWaitTimeForLock_s int = 40 ) as begin declare2 @TestBetrieb bit = 0 declare @RCAppLockRequest int = 0 declare @MyName nvarchar(64) = object_name(@@procid) declare @WartenEinVersuch_ms int = 1000 declare3 @WartenBisWiederholung_s int = 1 declare @Gestartet datetime = getutcdate() declare @HabeInitialisiert int = 1 SET XACT_ABORT OFF begin transaction BEGIN4 TRY WirVersuchen: if datediff(ss, @Gestartet, getutcdate()) > @MaxWaitTimeForLock_s begin select @HabeInitialisiert = -1 exec QBM_PJobQueueInit_i @Queue5, @SessionID, @SetSessionOnly = 1 goto endlabel end if not exists (select top 1 1 from JobQueue q with (readpast) where q.Ready2EXE in (N'LOADED', N'PROCESSING'6, N'MISSING', 'FINISHED') and q.Queue = @queue ) and @TestBetrieb = 0 begin exec QBM_PJobQueueInit_i @Queue, @SessionID, @SetSessionOnly = 1 goto endLabel7 end exec @RCAppLockRequest = sys.sp_getapplock @Resource = @MyName , @LockMode='Exclusive' , @LockOwner='Transaction' , @LockTimeout = @WartenEinVersuch_ms8 if @RCAppLockRequest < 0 begin exec QBM_PWaitForSeconds @WartenBisWiederholung_s goto wirVersuchen end exec QBM_PJobQueueInit_i @Queue, @SessionID9, @SetSessionOnly = 0 END TRY BEGIN CATCH select @HabeInitialisiert = -1 exec QBM_PSessionErrorAdd default declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow10() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT END CATCH EndeMitRelease: exec sp_releaseapplock @Resource = @MyName , @LockOwner = 'Transaction' EndLabel:11 if @@TRANCOUNT > 0 begin commit transaction end return (@HabeInitialisiert) end 12