我想在修改数据时将数据表设为独占,不知道sqlserver 支不支持exclusive?如果不行,要怎么设置?如果可以,其他用户使用时发生异常怎么判断?

解决方案 »

  1.   

    语法
    sp_getapplock [ @Resource = ] 'resource_name',
        [ @LockMode = ] 'lock_mode'
        [ , [ @LockOwner = ] 'lock_owner' ]
        [ , [ @LockTimeout = ] 'value' ]参数
    [@Resource =] 'resource_name'由客户端应用程序指定的锁资源名称。应用程序必须确保资源的唯一性。指定名称经过内部哈希计算后成为可以存储在 SQL Server 锁管理器中的值,resource name 的数据类型为 nvarchar(255),没有默认值。 [@LockMode =] 'lock_mode'锁模式。lock_mode 的数据类型为 nvarchar(32),没有默认值,它可以为下列值之一:Shared、Update、Exclusive、IntentExclusive、IntentShared。[@LockOwner =] 'lock_owner'是锁的所有者。lock_owner 的数据类型为 nvarchar(32),并且可以是 Transaction(默认值)或 Session。当 lock_owner 值为默认值或当显式地指定 Transaction 时,则必须从事务内执行 sp_getapplock。[@LockTimeout =] 'value'锁超时值,以毫秒为单位。默认值与 @@LOCK_TIMEOUT 返回的值相同。若要指定对于不能立即授予的锁请求应返回一个错误,而不应等待锁,请指定 0。
    //[@LockMode =] 'lock_mode' 模式中有此选项
    具体也不太清楚,看这些能不能帮上你。
      

  2.   

    sql server排他锁就可以满足你的要求
      

  3.   

    除了这么写,可不可以用table控件的exclusive属性进行设置呢?