积极答复者
数据页锁定问题(Lanch)

问题
答案
全部回复
-
皱大哥:http://blogs.msdn.com/b/apgcdsd/archive/2012/08/13/buffer-latch-timeout.aspx
EX – Exclusive Latch 独占模式,主要用于写数据页的时候需要,
如果A表由于插入数据结果占用了一个数据页ROWPAGE1,但是如果此时对B表进行select,有可能会访问到数据页ROWPAGE1上B表的数据,此时就应该不能访问了吧!是这样理解的吗?
-
如果说由于A表加了页锁的话,我查询此页上B表的数据就不能访问了吗?
你好,
页级锁是指在事务的操纵过程中,无论事务处理数据的多少,每一次都锁定一页,在这个页上的数据不能被其他事务操纵。在页级锁中,即使是一个事务只操纵页上的一行数据,那么该页上的其他数据行也不能被其他事务使用。所以如果B表和A表在同一页的话,应该是不能访问的。
Thanks,
Amy Peng立刻免费下载TechNet论坛好帮手
-
LZ我之前写过一篇“SQLSERVER页面错误的解决方案记录”
你可以看到sqlserver里面的页的面纱,究竟页面是怎样构成的
一般一个页面会存储索引或者数据,而不管是索引或者数据他存储的都是同一张表的数据或者同一张表的索引
文章地址:http://www.cnblogs.com/lyhabc/archive/2012/10/22/2733509.html
下面是我的文章的大概内容,有兴趣的话LZ可以看一下,可以让LZ了解多点sqlserver页面的东西
下面说一下解决步骤: 步骤一:找出页所属objectid 和页面信息 使用”DBCC PAGE(dbid,fileid,pageid,formatid) --formatid一般为3“ (formatid的可选值为1,2,3 一般3是比较友好的其余两种显示格式比较深奥) 语句来找出错的那个页面的信息 1 EXEC sys.sp_helpdb @dbname = pratice --找出数据库ID 2 3 USE pratice 4 5 EXEC sys.sp_helpfile --找出数据文件ID 然后就可以运行下面语句了: 下面这两句要一起运行 1 DBCC TRACEON(3604,-1) 2 3 DBCC PAGE(13,1,10,3) --指定错误页面号10 再说明一下indexid的值 IndexId=0 堆 数据页 IndexId=1 聚集索引 索引页 IndexId>1 非聚集索引 索引页 由于时间关系我直接输出了,里面有解析 根据objectid运行下面语句看看页面属于哪个对象 1 SELECT 2 s.name AS N'架构名', 3 o.name AS N'表名' 4 FROM sys.sysobjects o INNER JOIN sys.schemas s ON o.uid=s.schema_id 5 WHERE o.id=44
- 已编辑 Steven.桦仔 2012年11月10日 6:30