6、在多个查询窗口(session)里执行上面的脚本
7、打开跟踪标记
DBCC TRACEON (1204, 1222, -1);
DBCC tracestatus
8、过一会儿就会看到其中一个session 59已经作为死锁牺牲品
9、在errorlog里已经看到spid为4的死锁监视器(LOCK MONITOR)已经监测到死锁的存在
EXEC xp_readerrorlog 0,1,NULL,NULL,'2015-08-06','2015-10-10','DESC'
总结
多人都不了解为什么SELECT语句也会产生死锁,其实SELECT语句一般在RC隔离级别下很少会发送死锁,只是用户在日常开发中会使用了一些不恰当的锁提示(Lock Hint)或者提升了事务隔离级别而导致
日常开发中我们都要注意不要滥用锁提示(Lock Hint),根据实际情况进行判断,该提升事务隔离级别就提升事务隔离级别,以免造成不必要的死锁。