BEGIN TRAN
SELECT 1
FROM Table
WITH (XLOCK, ROWLOCK)
COMMIT TRAN
Det kommer att göra susen.
REDIGERA
Som noterat av andra kan du inte låsa en rad så att den inte kan läsas . Det enda sättet jag känner till att göra detta är följande:
WITH (UPDLOCK, TABLOCK)
Och detta förutsätter att en WITH (NOLOCK) aldrig används i en SELECT-sats (vilket bör undvikas ändå).
Jag testade detta och det kommer att fungera, även om TABLOCK endast ska användas i extrema fall. Visst om samtidighet krävs är det en dålig lösning och någon annan form av låsning skulle behövas. Ett sätt är att uppdatera en bitkolumn "Tillgänglig True/False" och bara läsa rader där Tillgänglig =True. Som @gbn föreslog, READPAST kunde användas med detta.