I have found that using the UPDLOCK and ROWLOCK hints together never works. The smallest level of granularity I can achieve is (UPDLOCK, PAGLOCK). It appears that UPDLOCK just ignores ROWLOCK completely and locks the whole table.
>Open Query Analyzer
>
>- open two connections
>- select number 1, run this
>
>USE Northwind
>BEGIN TRAN
>SELECT * FROM dbo.Categories (UPDLOCK,ROWLOCK) WHERE CategoryID=3
>
>
>- select number 2, run this
>
>USE Northwind
>BEGIN TRAN
>SELECT * FROM dbo.Categories (UPDLOCK,ROWLOCK) WHERE CategoryID=3
>ROLLBACK
>
>You can see session 2 i locked
>
>- select number 1, run this
>
>ROLLBACK
>
>
>You can see session 2 continue
>
>Fabio