鎖定提示 描述
HOLDLOCK 將共享鎖保留到事務(wù)完成,而不是在相應(yīng)的表、行或數(shù)據(jù)頁不再需要時(shí)就立即釋放鎖。HOLDLOCK 等同于 SERIALIZABLE。
NOLOCK 不要發(fā)出共享鎖,并且不要提供排它鎖。當(dāng)此選項(xiàng)生效時(shí),可能會(huì)讀取未提交的事務(wù)或一組在讀取中間回滾的頁面。有可能發(fā)生臟讀。僅應(yīng)用于 SELECT 語句。
PAGLOCK 在通常使用單個(gè)表鎖的地方采用頁鎖。
READCOMMITTED 用與運(yùn)行在提交讀隔離級(jí)別的事務(wù)相同的鎖語義執(zhí)行掃描。默認(rèn)情況下,SQL Server 2000 在此隔離級(jí)別上操作。
READPAST 跳過鎖定行。此選項(xiàng)導(dǎo)致事務(wù)跳過由其它事務(wù)鎖定的行(這些行平常會(huì)顯示在結(jié)果集內(nèi)),而不是阻塞該事務(wù),使其等待其它事務(wù)釋放在這些行上的鎖。READPAST 鎖提示僅適用于運(yùn)行在提交讀隔離級(jí)別的事務(wù),并且只在行級(jí)鎖之后讀取。僅適用于 SELECT 語句。
READUNCOMMITTED 等同于 NOLOCK。
REPEATABLEREAD 用與運(yùn)行在可重復(fù)讀隔離級(jí)別的事務(wù)相同的鎖語義執(zhí)行掃描。 
ROWLOCK 使用行級(jí)鎖,而不使用粒度更粗的頁級(jí)鎖和表級(jí)鎖。
SERIALIZABLE 用與運(yùn)行在可串行讀隔離級(jí)別的事務(wù)相同的鎖語義執(zhí)行掃描。等同于 HOLDLOCK。
TABLOCK 使用表鎖代替粒度更細(xì)的行級(jí)鎖或頁級(jí)鎖。在語句結(jié)束前,SQL Server 一直持有該鎖。但是,如果同時(shí)指定 HOLDLOCK,那么在事務(wù)結(jié)束之前,鎖將被一直持有。
TABLOCKX 使用表的排它鎖。該鎖可以防止其它事務(wù)讀取或更新表,并在語句或事務(wù)結(jié)束前一直持有。
UPDLOCK 讀取表時(shí)使用更新鎖,而不使用共享鎖,并將鎖一直保留到語句或事務(wù)的結(jié)束。UPDLOCK 的優(yōu)點(diǎn)是允許您讀取數(shù)據(jù)(不阻塞其它事務(wù))并在以后更新數(shù)據(jù),同時(shí)確保自從上次讀取數(shù)據(jù)后數(shù)據(jù)沒有被更改。
XLOCK 使用排它鎖并一直保持到由語句處理的所有數(shù)據(jù)上的事務(wù)結(jié)束時(shí)??梢允褂?PAGLOCK 或 TABLOCK 指定該鎖,這種情況下排它鎖適用于適當(dāng)級(jí)別的粒度。

至于鎖定多少條記錄的問題, sql默認(rèn)的鎖定行為本來就是行級(jí)鎖定的, 所以你用TOP 1指定只鎖定一條記錄就好了/

SELECT TOP 1 * FROM tb WITH(UPDLOCK, READPAST)
see
http://community.csdn.net/Expert/topic/5187/5187714.xml?temp=.9009821