BEGIN TRAN
SELECT 1
FROM Table
WITH (XLOCK, ROWLOCK)
COMMIT TRAN
Dat zal het lukken.
BEWERKEN
Zoals anderen al hebben opgemerkt, kun je een rij niet vergrendelen om niet gelezen te worden . De enige manier die ik ken om dit te doen is als volgt:
WITH (UPDLOCK, TABLOCK)
En dit veronderstelt dat een WITH (NOLOCK) nooit wordt gebruikt in een SELECT-instructie (wat sowieso moet worden vermeden).
Ik heb dit getest en het zal werken, hoewel TABLOCK alleen in extreme gevallen moet worden gebruikt. Zeker als gelijktijdigheid vereist is, is het een slechte oplossing en zou een andere vorm van vergrendeling nodig zijn. Een manier is om een bitkolom "Available True/False" bij te werken en alleen rijen te lezen waar Beschikbaar =True. Zoals @gbn suggereerde, zou READPAST kon hiermee worden gebruikt.