Jenis pendekatan yang saya sarankan adalah memiliki bidang dalam catatan di sepanjang baris yang menunjukkan apakah catatan sedang diproses atau tidak. Kemudian terapkan sproc "baca berikutnya dari antrian" yang melakukan hal berikut, untuk memastikan tidak ada 2 proses yang mengambil catatan yang sama:
BEGIN TRANSACTION
-- Find the next available record that's not already being processed.
-- The combination of UPDLOCK and READPAST hints makes sure 2 processes don't
-- grab the same record, and that processes don't block each other.
SELECT TOP 1 @ID = ID
FROM YourTable WITH (UPDLOCK, READPAST)
WHERE BeingProcessed = 0
-- If we've found a record, set it's status to "being processed"
IF (@ID IS NOT NULL)
UPDATE YourTable SET BeingProcessed = 1 WHERE ID = @ID
COMMIT TRANSACTION
-- Finally return the record we've picked up
IF (@ID IS NOT NULL)
SELECT * FROM YourTable WHERE ID = @ID
Untuk info selengkapnya tentang petunjuk tabel ini, lihat MSDN