BEGIN TRAN
SELECT 1
FROM Table
WITH (XLOCK, ROWLOCK)
COMMIT TRAN
Det vil gøre det trick.
REDIGER
Som bemærket af andre, kan du ikke låse en række for ikke at blive læst . Den eneste måde, jeg kender til at gøre dette på, er som følger:
WITH (UPDLOCK, TABLOCK)
Og dette forudsætter, at en WITH (NOLOCK) aldrig bruges i en SELECT-sætning (som alligevel bør undgås).
Jeg testede dette, og det vil virke, selvom TABLOCK kun bør bruges i ekstreme tilfælde. Hvis der kræves samtidighed, er det bestemt en dårlig løsning, og en anden form for låsning ville være nødvendig. En måde er at opdatere en bit-kolonne "Tilgængelig True/False" og kun læse rækker, hvor Available =True. Som @gbn foreslog, kunne READPAST bruges med dette.