• I think you shold take out the HOLDLOCK. HOLDLOCK is the same as SERIALIZABLE, that is protection against "phantom reads", that is rows that were inserted since you read the range. Since your procedure is not inserting any rows, I don't see you need it.

    The serializable isolation level is quite prone to deadlocks, so avoid it if possible.

    [font="Times New Roman"]Erland Sommarskog, SQL Server MVP, www.sommarskog.se[/font]