我在sql 2000中有一个数据库。当我打开系统表sysindexkeys时,我看到很多记录。 但是,当我对此表使用dbcc ind命令时,我不会获得有关该表的任何信息。 我也用过 DBCC TRACEON(3604)
继承人我做了什么: -
声明@DBID Int,@ TableID Int 选择@DBID = db_id(),@ TableID = object_id('sysindexkeys') DBCC ind(@DBID,@ TableID,-1) GO
这不提供任何信息。但是,如果我将此命令用于其他表,我得到的页面没有这些表的详细信息。 任何人都可以帮我解决这个问题。
谢谢, 犹大书
答案 0 :(得分:0)
和以前一样,我只是在2005年进行了测试,但同样的信息可能适用。在2005年,我可以通过DAC向DBCC提出一些基础系统表,但不是全部 - 有些似乎被阻止被访问。
Sys.SysHobts和Sys.SysHobtColumns有效,但Sys.SysIndexes和Sys.SysIndexKeys都失败。
如果从sys.sysobjects中选择,您会注意到大部分系统表都有负ID,这似乎与DBCC一起使用,并阻止声称不存在的操作。
我测试了一个样本并且该规则似乎成立,因此可能很好地表明您是否可以这样做。我没有看到文件说DBCC Ind在它可以检查的对象方面受到限制,但是没有相关的官方文档。由于我们目睹了它,显然存在人为的限制。