--事务隔离
set transaction isolation level serializable
begin tran
update customer set State='wj' where CustID=7
commit
--行锁
begin tran
update customer with(rowlock) set State='wj' where CustID=7
commit
用哪一种啊?

解决方案 »

  1.   

    to:wzy_love_sly那就是所用:
    begin tran 
    update customer with(rowlock) set State='wj' where CustID=7 
    commit 
    这种方式?
      

  2.   

    begin try 
    begin tran
      update t1 set c2=3 where c1=1
      update t2 set column1='ee1' where x=5
    commit tran
    end try
    begin catch
    rollback
    end catch默认情况下,不加try catch的话,上面两个语句是分开执行的,错一个另外一个也执行
    但加try catch的话,可以保证事务的正确
      

  3.   

    隔离级别是一种影响锁的行为,替代不了锁的功能
    http://technet.microsoft.com/zh-cn/library/ms173763.aspx
      

  4.   

    事物在执行的时候会根据当前所设置的隔离级别来给表,page,row,index,range中的其中多个来加锁的
      

  5.   

    我用sp_lock 查询出来的,帮忙看一下各个字段代表什么意思???
      

  6.   

    列名  数据类型  说明  
    spid
     smallint
     请求锁的进程的数据库引擎 进程 ID (SPID) 号。
     
    dbid
     smallint
     保留锁的数据库的标识号。可以使用 DB_NAME() 函数来标识数据库。
     
    ObjId
     int
     持有锁的对象的标识号。可以在相关数据库中使用 OBJECT_NAME() 函数来标识对象。值为 99 时是一种特殊情况,表示用于记录数据库中页分配的其中一个系统页的锁。
     
    IndId
     smallint
     持有锁的索引的索引标识号。
     
    Type
     nchar(4)
     锁的类型:RID = 表中单个行的锁,由行标识符 (RID) 标识。KEY = 索引内保护可串行事务中一系列键的锁。PAG = 数据页或索引页的锁。EXT = 区(具有 8 个连续页的单元)的锁。TAB = 整个表(包括所有数据和索引)的锁。DB = 数据库的锁。FIL = 数据库文件的锁。APP = 指定的应用程序资源的锁。MD = 元数据或目录信息的锁。HBT = 堆或 B 树索引的锁。在 SQL Server 2005 中此信息不完整。AU = 分配单元的锁。在 SQL Server 2005 中此信息不完整。
     
    Resource
     nchar(32)
     标识被锁定资源的值。值的格式取决于 Type 列标识的资源类型:Type 值:Resource 值RID:格式为 fileid:pagenumber:rid 的标识符,其中 fileid 标识包含页的文件,pagenumber 标识包含行的页,rid 标识页上的特定行。fileid 与 sys.database_files 目录视图中的 file_id 列相匹配。KEY:数据库引擎 内部使用的十六进制数。PAG:格式为 fileid:pagenumber 的数字,其中 fileid 标识包含页的文件,pagenumber 标识页。EXT:标识区中的第一页的数字。该数字的格式为 fileid:pagenumber。TAB:没有提供信息,因为已在 ObjId 列中标识了表。DB:没有提供信息,因为已在 dbid 列中标识了数据库。FIL:文件的标识符,与 sys.database_files 目录视图中的 file_id 列相匹配。APP:被锁定的应用程序资源的唯一标识符。格式为 DbPrincipleId:<资源字符串的前 2 个到 16 个字符><哈希运算值>。MD:随资源类型而变化。有关详细信息,请参阅 sys.dm_tran_locks 中 resource_description 列的说明。HBT:没有提供任何信息。请改用 sys.dm_tran_locks 动态管理视图。AU:没有提供任何信息。请改用 sys.dm_tran_locks 动态管理视图。
     
    模式
     nvarchar(8)
     所请求的锁模式。可以是:NULL = 不授予对资源的访问权限。用作占位符。Sch-S = 架构稳定性。确保在任何会话持有对架构元素(例如表或索引)的架构稳定性锁时,不删除该架构元素。Sch-M = 架构修改。必须由要更改指定资源架构的任何会话持有。确保没有其他会话正在引用所指定的对象。S = 共享。授予持有锁的会话对资源的共享访问权限。U = 更新。指示对最终可能更新的资源获取的更新锁。用于防止一种常见的死锁,这种死锁在多个会话锁定资源以便稍后对资源进行更新时发生。X = 排他。授予持有锁的会话对资源的独占访问权限。IS = 意向共享。指示有意将 S 锁放置在锁层次结构中的某个从属资源上。IU = 意向更新。指示有意将 U 锁放置在锁层次结构中的某个从属资源上。IX = 意向排他。指示有意将 X 锁放置在锁层次结构中的某个从属资源上。SIU = 共享意向更新。指示对有意在锁层次结构中的从属资源上获取更新锁的资源进行共享访问。SIX = 共享意向排他。指示对有意在锁层次结构中的从属资源上获取排他锁的资源进行共享访问。UIX = 更新意向排他。指示对有意在锁层次结构中的从属资源上获取排他锁的资源持有的更新锁。BU = 大容量更新。用于大容量操作。RangeS_S = 共享键范围和共享资源锁。指示可串行范围扫描。RangeS_U = 共享键范围和更新资源锁。指示可串行更新扫描。RangeI_N = 插入键范围和空资源锁。用于在将新键插入索引前测试范围。RangeI_S = 键范围转换锁。由 RangeI_N 和 S 锁的重叠创建。RangeI_U = 由 RangeI_N 和 U 锁的重叠创建的键范围转换锁。RangeI_X = 由 RangeI_N 和 X 锁的重叠创建的键范围转换锁。RangeX_S = 由 RangeI_N 和 RangeS_S 锁的重叠创建的键范围转换锁。RangeX_U = 由 RangeI_N 和 RangeS_U 锁的重叠创建的键范围转换锁。RangeX_X = 排他键范围和排他资源锁。这是在更新范围中的键时使用的转换锁。
     
    Status
     nvarchar(5)
     锁的请求状态:CNVRT:锁正在从另一种模式进行转换,但是转换被另一个持有锁(模式相冲突)的进程阻塞。GRANT:已获取锁。WAIT:锁被另一个持有锁(模式相冲突)的进程阻塞。
     
      

  7.   

    如果是SQL2005可以更新已提交读锁定为已提交读快照 ,这个不要修改程序