您的位置:首页 > 博客中心 > 数据库 >

可能发生了架构损坏。请运行 DBCC CHECKCATALOG。

时间:2022-03-14 03:23

3. 在 SQL 2005 中修改系统表use mastergocreate table ddd (id int not null)goinsert into ddd values(10)go

这时候,我们创建了一个表:ddd。下面在 SQL 2005 系统表 sys.sysschobjs 中查询这个表“ddd”的元数据。sys.sysschobjs 就类似于 SQL 2000 中的系统表 dbo.sysobjects。

select * from sys.sysschobjs where name = ‘ddd‘

下面列出的结果集中,由于版面的缘故,我省略了 created, modified 两个日期字段内容。

id name nsid nsclass status type pid pclass intprop created modified---------- ----- ---- ------- -------- ---- ---- ------ -------- ------- --------1211151360 ddd 1 0 917504 U 0 1 1 2008*** 2008***

这时候,我想把表“ddd”更名为“sqlstudy”:

update sys.sysschobjs set name = ‘sqlstudy‘ where name = ‘ddd‘警告: 数据库 ID 1 中的系统表 ID 34 已直接更新,但可能未维护缓存一致性。应重新启动 SQL Server。(1 行受影响)

因为有缓存导致不一致,新的表名字可能没有马上生效,在命令行 Ctrl+C,重新启动 SQL Server 2005。就可以看到表“ddd”已经改名为“sqlstudy”了。

select * from sqlstudyid-------10补充内容:查看 SQL 2005 系统表的语句。select name from sys.all_objects where type = ‘S‘ order by namename-------------------sysallocunitssysasymkeyssysbinobjssysbinsubobjssyscertssyschildinstssysclsobjssyscolparssysconvgroupsysdbfilessysdbregsysdercvsysdesendsysendptssysfiles1sysftindssysguidrefssyshobtcolumnssyshobtssysidxstatssysiscolssyslnklgnssyslogshipperssysmultiobjrefssysnsobjssysobjkeycryptssysobjvaluessysownerssysprivssysqnamessysremsvcbindssysrmtlgnssysrowsetcolumnssysrowsetrefssysrowsetssysrtssysscalartypessysschobjssysserefssyssingleobjrefssyssqlguidessystypedsubobjssysusermsgssyswebmethodssysxlgnssysxmitqueuesysxmlcomponentsysxmlfacetsysxmlplacementsysxpropssysxsrvs

在 SQL Server 2005 master 数据库中,共有 51 个系统表。并且这些系统表的 schema 是 “sys”。

本文《SQL 2005 修改系统表方法》示例,在 SQL Server 2005 Enterprise Edition SP2(9.00.3042.00) 环境下运行通过。操作系统:Windows Server 2003。

本文参考:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=89594&SiteID=1

热门排行

今日推荐

热门手游