Devolver filas desbloqueadas en una consulta "seleccionar top n"

Necesito tener una tabla de base de datos MsSql y otros 8 procesos (idénticos) que acceden a la misma tabla en paralelo: hacer una selección n superior, procesar esas n filas y actualizar una columna de esas filas. El problema es que necesito seleccionar y procesar cada fila solo una vez. Esto significa que si un proceso llegó a la base de datos y seleccionó las n filas superiores, cuando llegue el segundo proceso, debería encontrar esas filas bloqueadas y seleccionar las filas de n a 2 * n filas, y así sucesivamente ...

¿Es posible poner un bloqueo en algunas filas cuando las selecciona y cuando alguien solicita n filas superiores que están bloqueadas para devolver las siguientes filas y no esperar a las bloqueadas? Parece una posibilidad remota, pero ...

Otra cosa en la que estaba pensando, tal vez no tan elegante pero suena simple y seguro, es tener en la base de datos un contador para las instancias que hicieron selecciones en esa tabla. La primera instancia que viene incrementará el contador y seleccionará n superior, la siguiente incrementará el contador y seleccionará filas de n * (i-1) a n * i, y así sucesivamente ...

¿Suena esto como una buena idea? ¿Tienes alguna sugerencia mejor? Cualquier pensamiento es muy apreciado!

Gracias por tu tiempo.

Respuestas a la pregunta(4)

Su respuesta a la pregunta