hobbylu 发表于 2011-04-01 20:21

有关如何找到一个对象所占有页的研究

最近几天一直在思考以下几个问题
1、如何把一个对象的所有页全部找出来?
2、如何直观的展现?

对于上述的问题,初步思路如下:
1、使用两个dbcc命令,dbcc allocdump,dbcc listoam
2、读取分配页和OAM页的内容
3、展现的方式可以考虑使用扫雷的界面

初步实现展示如下:


目前是挂靠在powersybedit上面,界面上不是特别好看,而且在powersybedit上,这项功能只能自己使用,因此在之后,考虑单独拉出来做一个。大家可以建议建议!另外的话,时间是实在有限,东西不一定能很好。

wfcjz 发表于 2011-04-02 07:59

hobbylu每年都会给人一个惊喜!

eisen 发表于 2011-04-02 08:41

请问一下,这些dbcc输出都是print出来的,而非结果集,请问lz是怎么捕捉到这些输出信息的阿?谢谢

hobbylu 发表于 2011-04-02 09:17

sybase open client中提供了回调函数,可以捕捉相关输出

Eisen 发表于 2011-04-02 09:27

哦。那请问JDBC可以吗?谢谢

hobbylu 发表于 2011-04-02 14:44

没有研究过,按道理应该可以的

andkylee 发表于 2011-04-05 14:38

这2个问题都是难点。
分析对象所占的页号,可以直接解析allocation page 和 extent page,也可按你说的接收open client回调的结果。这个对你来说,应该不是太难的问题了。

我觉得如何更好得展示出来,也是个难题。如果某个对象占用页面数很多的话,显示起来会是问题。 你可以参考sqlserver management studio中带的那个显示页面内容的插件。感觉那个显示效果挺好的。

andkylee 发表于 2011-04-05 14:41

关于功能上的建议: 显示某个对象的占用页面位图的时候,能够做个链接,点某个页号就显示相应的页面真实数据。

hobbylu 发表于 2011-04-06 09:18

andkylee的想法我都有考虑,果然是大家,不过目前主要的问题是在展现上,用VC编写界面总之不是很容易。

hobbylu 发表于 2011-04-06 14:16

今天做了一个控件,感觉一个字“累”。
页: [1] 2
查看完整版本: 有关如何找到一个对象所占有页的研究