exec sp_executesql N'
set nocount on;set xact_abort on;set tran isolation level read committed;
declare @end datetime2 = DATEADD(ms, @endMs, SYSUTCDATETIME()),
@delay datetime = DATEADD(ms, @delayMs, convert(DATETIME, 0));
WHILE (SYSUTCDATETIME() < @end)
BEGIN
update top (1) JQ set FetchedAt = GETUTCDATE()
output INSERTED.Id, INSERTED.JobId, INSERTED.Queue, INSERTED.FetchedAt
from [HangFire].JobQueue JQ with (forceseek, paglock, xlock)
where Queue in (@queues1) and (FetchedAt is null or FetchedAt < DATEADD(second, @timeoutSs, GETUTCDATE()));
IF @@ROWCOUNT > 0 RETURN;
WAITFOR DELAY @delay;
END',N'@queues1 nvarchar(4000),@timeoutSs int,@delayMs int,@endMs int',@queues1=N'default',@timeoutSs=-12000,@delayMs=50,@endMs=1000