利用DBCC PAGE查看SQL Server中的表和索引数据
2008-10-13 10:07:43 来源:WEB开发网问题
我读了很多关于数据库页和如何利用它们来存储表数据和索引数据的文章。有没有一种方法可以让我真正看到这方面的信息呢?
专家解答
在SQL Server中最糟的一个秘密是没有正式文件说明的DBCC PAGE命令,而这个命令可以让你查看数据和索引页的内容。其中,某些信息仍然是神秘的,而你喜爱的搜索引擎是一个让你开始着手查找输出结果背后展示的很多意思的好去处。尽管如此,我发现,当我遍历数据库来解决数据库问题而我只有通过页信息来继续摸索这个问题时,或者当我只是想看看当遇到某些数据库操作发生时数据库引擎如何处理数据和索引页时,我发现DBCC命令是很有用的。
DBCC PAGE 参数DBCC PAGE
(
['database name'|database id], -- can be the actual name or id of the database
file number, -- the file number where the page is found
page number, -- the page number within the file
print option = [0|1|2|3] -- display option; each option provides differing levels of information
)
首先,让我们来创建一个示例数据库和表,这将有利于我们描述通过DBCC PAGE你看到了什么。
USEMASTER
GO
CREATEDATABASEMSSQLTIPS
GO
USEMSSQLTIPS
GO
CREATETABLEDBO.EMPLOYEE
(
EMPLOYEEIDINTIDENTITY(1,1),
FIRSTNAMEVARCHAR(50)NOTNULL,
LASTNAMEVARCHAR(50)NOTNULL,
DATE_HIREDDATETIMENOTNULL,
IS_ACTIVEBITNOTNULLDEFAULT1,
CONSTRAINTPK_EMPLOYEEPRIMARYKEY(EMPLOYEEID),
CONSTRAINTUQ_EMPLOYEE_LASTNAMEUNIQUE(LASTNAME,FIRSTNAME)
)
GO
INSERTINTODBO.EMPLOYEE(FIRSTNAME,LASTNAME,DATE_HIRED)
SELECT'George','Washington','1999-03-15'
GO
INSERTINTODBO.EMPLOYEE(FIRSTNAME,LASTNAME,DATE_HIRED)
SELECT'Benjamin','Franklin','2001-07-05'
GO
INSERTINTODBO.EMPLOYEE(FIRSTNAME,LASTNAME,DATE_HIRED)
SELECT'Thomas','Jefferson','2002-11-10'
GO
更多精彩
赞助商链接