一个特殊的dbcc命令--意外收获之dbcc tab

首先我们来看看这条指令:

DBCCHELP('?') --mssql sp3帮助
GO

得到如下结果 :

/**//*
checkalloc
checkcatalog
checkconstraints
checkdb
checkfilegroup
checkident
checktable
cleantable
concurrencyviolation
dbreindex
dbrepair
dropcleanbuffers
free
freeproccache
help
indexdefrag
inputbuffer
memusage
newalloc
opentran
outputbuffer
perfmon
pintable
proccache
show_statistics
showcontig
shrinkdatabase
shrinkdb
shrinkfile
sqlperf
textall
textalloc
traceoff
traceon
tracestatus
unpintable
updateusage
useroptions
DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。

*/

大家有没有发现并没有dbcc tab 这个命令,奇怪了, 怎么回事,

再来看另一个命令:

DBCCHELP('free')
GO
--结果
/**//*

freedll_name(FREE)
e.g.DBCCxp_sample(FREE)
DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
*/

那我们试试这里的tab看看,是不是意外结果 :

DBCCHELP('tab')
GO
/**//*
服务器:消息8987,级别16,状态1,行1
DBCC语句'tab'没有可用的帮助。
DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
*/

结果 还真意外,MSSQL无法解释这个命令,

先后运行Dbcc tab 提示:向 DBCC 语句提供的参数数目不正确。,

再试dbcc tab(1) 仍然提示:向 DBCC 语句提供的参数数目不正确。

再试在Dbcc tab(1,1) 终于有结果 出来了,

dbcctab(1,1)
/**//*
PageFIDPagePIDIAMFIDIAMPIDObjectIDIndexIDPageTypeIndexLevelNextPageFIDNextPagePIDPrevPageFIDPrevPagePID
-------------------------------------------------------------------------------------------------------------------
111NULLNULL111000000
181111010166800
11211111200000
136511110101109211095
1369111101016711670
13731111010167011091
13941111010110941669
144811110101109311088
145211110101109011089
166411110101109111090
166511110101108811092
16661111010166911093
166711110101108911094
166811110101109518
1669111101013941666
1670111101013691373
16711111010001369
11088111101014481665
11089111101014521667
11090111101016641452
11091111101013731664
11092111101016651365
11093111101016661448
11094111101016671394
11095111101013651668
11338NULLNULL121000000
1381133812201134511344
12591133812201135311352
1134411338122013800
1134511338122011347138
113461133812210000
113471133812201134811345
113481133812201134911347
113491133812201135011348
113501133812201135111349
113511133812201135211350
11352113381220125911351
11353113381220001259
11340NULLNULL131000000
1133911340132013700
113411134013201310137
113421134013210000
11343113401320001310
1371134013201134111339
13101134013201134311341

(所影响的行数为45行)

DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
*/

中间有二列:objectid,IndexID,

难道是表的ID,

再测试

selectobject_id('sysobjects'),object_id('syscolumns'),object_id('sysdatabases'),object_id('xp_cmdshell')
/**//*
--------------------------------------------
1330927342368

(所影响的行数为1行)


*/

有点门道了吧,估计前是就是dbid了吧

测试:

selectdb_id('master'),db_id('tempdb'),db_id('pubs')
/**//*
------------------
125

(所影响的行数为1行)



*/

到此我们来解释一下这个命令吧

--语法:
DBCCTAB(dbid,objectid,outtype)

--参数:
dbid--数据库ID
object_id--对象ID
outtype--输入出类型:猜想的,因为我试了好没有效果,只输出一种缺省的效果

好,我们来测试一下:

selectobject_id('sysobjects')

selectdb_id('csdn_test')
/**//*

-----------
1

(所影响的行数为1行)


------
8

(所影响的行数为1行)
*/

DBCCTAB(8,1,0)--DBCC
/**//*
PageFIDPagePIDIAMFIDIAMPIDObjectIDIndexIDPageTypeIndexLevelNextPageFIDNextPagePIDPrevPageFIDPrevPagePID
-------------------------------------------------------------------------------------------------------------------
110NULLNULL111000000
181101010116500
11111011200000
1165110101037118
1536110101000371
371110101015361165
176NULLNULL121000000
17517612210000
15231761220152500
15251761220001523
178NULLNULL131000000
17717813200000

(所影响的行数为12行)

DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
*/




嘿嘿,知道这个命令的意义了吧!

其实这仅是一次误操作带来的意外结果

好啦,今天的课就到儿了,明天见!!!

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页