I've had a look and MSMicrosoft themselves offer a solution without locks:
LinkSQL Server Sequence Number
This is a simple update with no lock hints, but they say it locks/deadlocks.
Nothing much on SO about this either.
I'd be inclined to add UPDLOCKUPDLOCK
to your ROWLOCK ROWLOCK
(as per "table as a queue" (SO) but without READPASTREADPAST
). This will increase isolation in case a 2ndsecond process starts reading.
However, the fact all your processes want to read/write the same row makes me second guess myself. READPASTREADPAST
allows safe concurrency but in this case it's useless.
Note: you can use the OUTPUTOUTPUT
clause instead of a 2ndsecond select then you don't need the transaction.
HTH...