BEGIN TRAN
SELECT 1
FROM Table
WITH (XLOCK, ROWLOCK)
COMMIT TRAN
Itu akan berhasil.
EDIT
Seperti yang dicatat oleh orang lain, Anda tidak dapat mengunci baris agar tidak dibaca . Satu-satunya cara yang saya tahu untuk melakukan ini adalah sebagai berikut:
WITH (UPDLOCK, TABLOCK)
Dan ini mengasumsikan bahwa WITH (NOLOCK) tidak pernah digunakan dalam pernyataan SELECT (yang harus dihindari).
Saya menguji ini dan itu akan berhasil, meskipun TABLOCK hanya boleh digunakan dalam kasus-kasus ekstrem. Tentu saja jika konkurensi diperlukan, itu adalah solusi yang buruk dan beberapa bentuk penguncian lainnya akan diperlukan. Salah satu caranya adalah dengan memperbarui kolom bit "Tersedia Benar/Salah" dan hanya membaca baris di mana Tersedia =Benar. Seperti yang disarankan @gbn, READPAST bisa digunakan dengan ini.