希望产生下面的效果,在网上找关于产生UIX锁的方法,一直不得要领,希望高手指点。谢谢。
resource_type request_mode request_type
OBJECT          UIX          LOCK

解决方案 »

  1.   

    谢谢fredrickhu
    我要的是更新意向锁,应该不是共享吧。
      

  2.   

    关注,之前看到过UIX的锁,但很快就升级为排他锁了IX。没有能驻留住。 
    不知有无方法可驻留UIX状态.
      

  3.   


    兄弟说得没错。我一直没有办法给数据表加上Update锁,所以就没法升级成UIX。
      

  4.   

    你想产生更新锁?、SQL Server 使用更新锁适用于任何需要在进行实际修改之前搜索数据的数据修改操作。这样的操作包括受限更新及删除,也包括在带有聚集索引的表上进行的插入操作。
      

  5.   

    UIX可以理解成一种转换锁定,并不是由SQLSERVER直接申请的,是由一种模式向另一种模式转换时中间状态。所以难弄。
      

  6.   

    完全的同意,比如下面这个数据表,里面包含超过3百万的数据。我对非索引列进行更新会产生Page级别的更新锁,但是表级别就是排它锁。很无奈,自己是想看看什么情况下出现UIX。
    CREATE TABLE [dbo].[bigtable](
    [col1] [int] NOT NULL,
    [col2] [varchar](50) NOT NULL,
    [keycol] [int] IDENTITY(1,1) NOT NULL
    ) ON [PRIMARY]SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    BEGIN TRAN
    UPDATE bigtable SET col1 = 0 WHERE col2 = 'B';--Monitoring the locks
    -- STEP2: Monitoring the sys.dm_tran_locks view by using %%lockres%%
    SELECT resource_description, resource_type, resource_associated_entity_id, request_mode  
    FROM sys.dm_tran_locks WHERE request_session_id = @@SPID 
    resource_type request_mode
    DATABASE S
    OBJECT X
    PAGE U
      

  7.   

    应该不能通过事务层的操作来block住U锁吧..
    两个事务只有一个能获得U锁,另一个只能release S锁,于是另一个事务获得的U升级为X。这两个操作都不能够被事务级的操作阻塞住吧。
    好奇lz想看U锁的目的是什么。
      

  8.   


    其实我的目的很简单,既然SQLServer提供UIX锁,我就是想测试一下如何能够产生UIX。