显示锁定信息
执行 sp_lock 系统存储过程时,Microsoft® SQL Server™ 2000 提供活动锁的报表。下面是结果集。spid
 Dbid
 ObjId
 IndId
 Type
 Resource
 Mode
 Status
 
1
 1
 0
 0
 DB
  
 S
 GRANT
 
6
 1
 0
 0
 DB
  
 S
 GRANT
 
7
 1
 0
 0
 DB
  
 S
 GRANT
 
8
 1
 0
 0
 DB
  
 S
 GRANT
 
8
 1
 1396200024
 0
 RID
 1:1225:2
 X
 GRANT
 
8
 1
 1396200024
 0
 PAG
 1:1225
 IX
 GRANT
 
8
 1
 1396200024
 2
 PAG
 1:1240
 IX
 GRANT
 
8
 1
 21575115
 0
 TAB
  
 IS
 GRANT
 
8
 1
 1396200024
 2
 KEY
 (03000100cb04)
 X
 GRANT
 
8
 1
 1396200024
 0
 TAB
  
 IX
 GRANT
 
类型列
"类型"列显示当前锁定的资源类型。资源类型 描述 
RID 用于锁定表中的一行的行标识符。 
KEY 索引中的行锁。用于保护可串行事务中的键范围。 
PAG 数据或索引页。 
EXT 相邻的八个数据页或索引页构成的一组。 
TAB 包括所有数据和索引在内的整个表。 
DB 数据库。 
资源列
"资源"列提供有关正被锁定资源的信息。资源类型 描述 
RID 表内已锁定行的行标识符。行由 fileid:page:rid 组合进行标识,其中,rid 是页中的行标识符。 
KEY SQL Server 内部使用的十六进制数字。 
PAG 页码。页由 fileid:page 组合进行标识,其中,fileid 是 sysfiles 表中的 fileid,而 page 是该文件内的逻辑页码。 
EXT 正被锁定的扩展盘区中的第一个页码。页由 fileid:page 组合进行标识。 
TAB 由于 ObjId 列已包含表的对象 ID,所以没有提供任何信息。 
DB 由于 dbid 列已包含数据库的数据库 ID,所以没有提供任何信息。 
在 sp_lock 的结果集内,锁定的 RID 资源类型中的资源描述为 1:1225:2。这表明在 fileid 1 内、页码为 1225 的页中、行标识符为 2 的行上应用了锁。有关更多信息,请参见有关死锁的疑难解答。模式列
"模式"列描述正应用于资源的锁类型。锁类型包括任何多粒锁。状态列
"状态"列显示锁是已经获取 (GRANT)、正在另一个进程中被阻塞 (WAIT)、还是正在转换为另一个锁 (CNVT)。正转换为另一种锁的锁会保持在一种模式中,但等待获取更强的锁模式(例如,从更新模式变为排它模式)。当遇到诊断阻塞问题时,会认为 CNVT 与 WAIT 类似。监视锁定活动的其它工具
当持有和释放锁的速度比 sp_lock 显示的速度快时,使用 sp_lock 来显示锁定信息并不一定始终可行。在这种情况下,可以使用 SQL 事件探查器监视和记录锁定信息。此外,可以使用 Windows 性能监视器监视使用 SQL Server 锁对象计数器的锁活动。

解决方案 »

  1.   

    共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。 
    更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。 
    排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时对同一资源进行多重更新。 
    意向 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。 
    架构 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。 
    大容量更新 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用。 
      

  2.   

    共享锁
    共享 (S) 锁允许并发事务读取 (SELECT) 一个资源。资源上存在共享 (S) 锁时,任何其它事务都不能修改数据。一旦已经读取数据,便立即释放资源上的共享 (S) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (S) 锁。更新锁
    更新 (U) 锁可以防止通常形式的死锁。一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (S) 锁,然后修改行,此操作要求锁转换为排它 (X) 锁。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排它 (X) 锁。共享模式到排它锁的转换必须等待一段时间,因为一个事务的排它锁与其它事务的共享模式锁不兼容;发生锁等待。第二个事务试图获取排它 (X) 锁以进行更新。由于两个事务都要转换为排它 (X) 锁,并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。若要避免这种潜在的死锁问题,请使用更新 (U) 锁。一次只有一个事务可以获得资源的更新 (U) 锁。如果事务修改资源,则更新 (U) 锁转换为排它 (X) 锁。否则,锁转换为共享锁。排它锁
    排它 (X) 锁可以防止并发事务对资源进行访问。其它事务不能读取或修改排它 (X) 锁锁定的数据。意向锁
    意向锁表示 SQL Server 需要在层次结构中的某些底层资源上获取共享 (S) 锁或排它 (X) 锁。例如,放置在表级的共享意向锁表示事务打算在表中的页或行上放置共享 (S) 锁。在表级设置意向锁可防止另一个事务随后在包含那一页的表上获取排它 (X) 锁。意向锁可以提高性能,因为 SQL Server 仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁。而无须检查表中的每行或每页上的锁以确定事务是否可以锁定整个表。意向锁包括意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。锁模式 描述 
    意向共享 (IS) 通过在各资源上放置 S 锁,表明事务的意向是读取层次结构中的部分(而不是全部)底层资源。 
    意向排它 (IX) 通过在各资源上放置 X 锁,表明事务的意向是修改层次结构中的部分(而不是全部)底层资源。IX 是 IS 的超集。 
    与意向排它共享 (SIX) 通过在各资源上放置 IX 锁,表明事务的意向是读取层次结构中的全部底层资源并修改部分(而不是全部)底层资源。允许顶层资源上的并发 IS 锁。例如,表的 SIX 锁在表上放置一个 SIX 锁(允许并发 IS 锁),在当前所修改页上放置 IX 锁(在已修改行上放置 X 锁)。虽然每个资源在一段时间内只能有一个 SIX 锁,以防止其它事务对资源进行更新,但是其它事务可以通过获取表级的 IS 锁来读取层次结构中的底层资源。 
    架构锁
    执行表的数据定义语言 (DDL) 操作(例如添加列或除去表)时使用架构修改 (Sch-M) 锁。当编译查询时,使用架构稳定性 (Sch-S) 锁。架构稳定性 (Sch-S) 锁不阻塞任何事务锁,包括排它 (X) 锁。因此在编译查询时,其它事务(包括在表上有排它 (X) 锁的事务)都能继续运行。但不能在表上执行 DDL 操作。大容量更新锁
    当将数据大容量复制到表,且指定了 TABLOCK 提示或者使用 sp_tableoption 设置了 table lock on bulk 表选项时,将使用大容量更新 (BU) 锁。大容量更新 (BU) 锁允许进程将数据并发地大容量复制到同一表,同时防止其它不进行大容量复制数据的进程访问该表。---------------------------------------------
    总之你看看帮助吧!
      

  3.   

    有四种:
    只读锁:adlockreadonly
    悲观锁:adlockpessinictic
    乐观锁:adlockoptimistic
    批量乐观锁:adlockbatchoptimistic