IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID('dbo.hold_semaphore') AND sysstat & 0xf = 4) DROP PROCEDURE dbo.hold_semaphore GO CREATE PROCEDURE hold_semaphore @name VARCHAR(30) = 'textreader' AS /* wait until the requested semaphore is available then grab it */ SET NOCOUNT ON WHILE (SELECT status FROM semaphore WHERE name = @name) = 1 BEGIN WAITFOR DELAY "00:00:10" END UPDATE semaphore SET status = 1 WHERE name = @name AND status = 0 GO