我正在使用sql server 2000.I有一个包含四列的表,即。 col1,col2,col3和col4。 我在表中有记录。 我使用了dbcc page命令,我可以看到所有列的值。 然后我从表中删除了一列col2,并再次执行了dbcc页面。 我可以看到除col2之外的所有列的值,其值为“Dropped”(记录结构仍然相同)。 我知道列信息存储在“syscolumn”表中 然而,没有找到col2的记录(显而易见的原因)。 我想知道在哪个系统表中可以找到col2被删除的信息。 这些信息存储在哪里?
谢谢, 犹大书
答案 0 :(得分:0)
我只能回答2005年,虽然这可能会给你足够的指示2000.据我所知,通过DMV的信息不可用,以获取使用专用管理控制台所需的信息(DAC)。
使用DAC连接可以在sys.sysrowsetsolumns中找到表格列 - 如果您将其过滤到对象的各个rowsetid / hobtid,您可以看到列,并且有两个要注意的字段,status和rowsetcolid。 / p>
作为测试用例,我在删除列之前和之后输出两次查询的值。
select * from sys.sysrowsetcolumns where rowsetid = 72057594038845440
ALTER TABLE dbo.foo DROP COLUMN test2
select * from sys.sysrowsetcolumns where rowsetid = 72057594038845440
输出
rowsetid rowsetcolid hobtcolid status rcmodified maxinrowlen
72057594038845440 1 1 0 0 4
72057594038845440 2 2 0 0 4
72057594038845440 3 3 0 0 4
72057594038845440 4 4 0 0 4
rowsetid rowsetcolid hobtcolid status rcmodified maxinrowlen
72057594038845440 1 1 0 0 4
72057594038845440 2 2 0 0 4
72057594038845440 4 4 0 0 4
72057594038845440 65536 3 2 0 4
测试正在删除第3列,您可以看到hobtcolid 3已将状态更改为2并且rowsetcolid已设置为65536.状态和ID的含义我只能从所采取的操作中推断出来。
附录:不要通过DAC编辑系统表中的任何数据 - 非常危险。