小编Art*_*dod的帖子

了解 Microsoft SQL-Server 中的六锁

有人可以解释一下进程如何获取SIX页面上的锁吗?在我的死锁图 xml 文件中,我看到在RC 隔离级别下运行的进程(在死锁时刻执行 select 语句)持有SIX页面上的锁。

这是什么意思以及如何获得该锁?从我从http://msdn.microsoft.com/en-us/library/aa213039%28v=sql.80%29.aspx 获得的信息中,SIX锁保护S所有资源IX上的-locks,并锁定层次结构中较低的一些资源。

对于我的情况,那将是IX行上的锁?可以IX-Lock放在一排?(我觉得不是)。我很迷惑。

另一件事是,我希望X行上有几个-locks 而根本没有S-locks(因为ILReadCommited)。SIX如果我只在前面的语句中插入了几条记录,为什么我锁定了整个页面?

编辑:死锁xml:

<deadlock-list>
 <deadlock victim="process4df94c8">
  <process-list>
   <process id="process4df94c8" taskpriority="0" logused="2968" waitresource="PAGE: 7:1:181357" waittime="3111" ownerId="41854656297" transactionname="user_transaction" lasttranstarted="2013-06-06T11:09:42.087" XDES="0x1d2434e80" lockMode="IX" schedulerid="6" kpid="3476" status="suspended" spid="52" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-06-06T11:09:42.183" lastbatchcompleted="2013-06-06T11:09:42.183" clientapp=".Net SqlClient Data Provider" hostname="CWCEINAW" hostpid="4260" loginname="cwcuser" isolationlevel="read committed (2)" xactid="41854656297" currentdb="7" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056"> …
Run Code Online (Sandbox Code Playgroud)

sql-server deadlock t-sql locking

5
推荐指数
1
解决办法
4576
查看次数

标签 统计

deadlock ×1

locking ×1

sql-server ×1

t-sql ×1