BEGIN TRAN
SELECT 1
FROM Table
WITH (XLOCK, ROWLOCK)
COMMIT TRAN
Eso hará el truco.
EDITAR
Como han señalado otros, no puede bloquear una fila para que no se lea . La única forma que conozco de hacer esto es la siguiente:
WITH (UPDLOCK, TABLOCK)
Y esto es asumiendo que un CON (NOLOCK) nunca se usa en una declaración SELECT (que debería evitarse de todos modos).
Probé esto y funcionará, aunque TABLOCK solo debe usarse en casos extremos. Ciertamente, si se requiere concurrencia, es una mala solución y se necesitaría alguna otra forma de bloqueo. Una forma es actualizar una columna de bits "Disponible Verdadero/Falso" y solo leer las filas donde Disponible =Verdadero. Como sugirió @gbn, READPAST podría usarse con esto.