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

SQL 2005 修改系统表

本文由 www.sqlstudy.com 原创,版权所有,转载请注明作者和出处!

在 SQL Server 2000 中修改系统表的方法大部分人都知道,介绍如何在 SQL 2005 中修改系统表的资料目前还比较少,虽然微软不赞成修改系统表,而且也把修改系统表的代码隐藏起来了。但微软一贯喜欢给自己留个小后门。我是这么想的:最先知道如何修改 SQL 2005 系统表的人只有微软 SQL Server 2005 的设计、开发者。于是就到 msdn 中逛逛,最后终于找到了 SQL 2005 修改系统表的方法:)

SQL 2005 修改系统表的两个先决条件1. 在单用户模式(single-user mode)下启动 sql server instance(实例)。2. 使用管理员专用连接(DAC: dedicated administrator connections),连接到 SQL Server Instance

下面,就来具体介绍如何实现这两个修改系统表的先决条件。

1. 单用户模式下启动 SQL Server 2005 Instance(实例)。

【开始】--【运行】--【services.msc】进入 Windows 服务管理器。

找到 【SQL Server 服务】--【右键】--【属性】

根据【可执行文件的路径】内容,我的是:

"D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sSQLB

命令行下,进入 sqlservr.exe 安装路径,执行:sqlservr.exe -sSQLB -m

C:\>d:D:\>cd D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\BinnD:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn> sqlservr.exe -sSQLB -m

-sSQLB 表示要启动的SQL Server 实例名字为:SQLB;-m 参数表示以单用户模式启动 SQL Server 实例。如果顺利的话,SQL Server 实例就启动起来了。如果启动不了呢,可以重新启动下机器,再试,如果仍然启动不了,那你可以根据报错内容,到网上找找解决方法。

2. 使用 DAC 连接到 SQL Server 2005。

使用 DAC 连接到 SQL Server 2005 最常见的方法就是,在命令行下执行带有 -A 参数的 sqlcmd,如:

c:\sqlcmd -E -S MYPC\SQLB -A

也可以使用 SQL Server 超级用户和密码进入:

c:\sqlcmd -U sa -P **** -S MYPC\SQLB -A

注意:这里是“MYPC\SQLB”(computer_name\instance_name),而不单单只是 SQL Server 实例名“SQLB”。 小知识:“除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。应用程序必须提供准备连接的计算机的名称和命名实例的实例名。计算机名和实例名以格式 computer_name\ instance_name 指定”。

如果不能通过 DAC 连接到 SQL Server 2005 实例,那你就要检查下,SQL Server Browser 这个服务启动没有。SQL Server Browser 侦听 1434端口(UDP端口),它可以根据客户端发送来的实例名,返回相应的IP 和 Port,从而引导客户端建立正确的连接。

大部分情况下都能顺利完成 DAC 连接。但是,在命令行下操作 SQL Server,你不觉得很痛苦吗,如果没有配置好 cmd 环境,显示的结果总是乱七八糟的。呵呵,我在这里介绍下如何使用 SQL Server Management Studio(SSMS)DAC 到 SQL 2005。DAC 连接跟普通连接不一样,它有个自己专用的端口,我们只要找到这个 DAC 端口,就可以以任何方式(命令行或者 SSMS)连接到 SQL 2005 实例。

如何找到 DAC 的专用端口呢?当你在命令行单用户下启动 sql server 的时候, SQL Server 在屏幕上会输出好多日志信息。关键是找到包含“Dedicated admin connection”的内容:

Server is listening on [ 127.0.0.1 [ipv4] 1183].Dedicated admin connection support was established for listening locally on port 1183.

这条信息告诉我们,SQL 2005 在网络地址 127.0.0.1 上的 1183 端口监听客户端的 DAC 连接。我们启动 SSMS,在服务器名称中输入:127.0.0.1,1183。这里的 ip 和 port 中间要用英文逗号“,”来分隔。当然,也可以在命令下通过 sqlcmd 来建立 DAC 连接。

c:\sqlcmd -E -S 127.0.0.1,1183

需要注意的是,如果指定了 DAC 端口,就不要在 sqlcmd 后加 -A 参数,否则会出错。这时候,也不需要启动 SQL Server Browser 了,因为我们已经告诉 sqlcmd 要连接到的 DAC 地址和端口是:127.0.0.1,1183。

就可以通过 DAC 连接到 SQL 2005 中,这时候会出现个错误,忽略它。

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

时间: 2024-10-16 07:10:49

可能发生了架构损坏。请运行 DBCC CHECKCATALOG。的相关文章

管家婆SQL SERVER数据库“可能发生了架构损坏。请运行DBCC CHECKCATALOG”修复

用户在使用过过程中,由于突然断电,造成数据无法读取.DBCC检测数据库提示以下错误 消息211,级别23,状态51,第1 行 可能发生了架构损坏.请运行DBCC CHECKCATALOG. 消息0,级别20,状态0,第0 行 当前命令发生了严重错误.应放弃任何可能产生的结果. 如果DBCC检测出现“可能发生了架构损坏.请运行DBCC CHECKCATALOG “这种错误,肯定是系统表出现错误,先使用DBCC CHECKCATALOG对数据库做检测,但发现没有错误. DBCC 执行完毕.如果DBC

金蝶12.0 SQL SERVER数据库可能发生了架构损坏,请运行 DBCC CHECKCATALOG的错误修复

客户的数据库报错联系到我们,我们的工程师拿到客户数据后,对数据库DBCC Checkdb修复,报“消息211,级别23,状态51,第1 行 可能发生了架构损坏.请运行DBCC CHECKCATALOG.” 消息 0,级别 20,状态 0,第 0 行 当前命令发生了严重错误.应放弃任何可能产生的结果. 错误截图如下: 看来用SQL SERVER自身命令是无法修复了,出现这种错误一般是系统表损坏,修复方法一般有以下两种: 第一种方法是使用数据库修复软件把数据提取成脚本,然后再重新生成数据库.这种方法

“请运行Chkdsk工具”怎么解决

今天重新系统,想从移动硬盘中拷贝数据,但是老是提示:“请运行Chkdsk工具” 于是在百度搜索一下,有人提供的解决方案很不错,在些引用一下,以备忘! 电脑上经常遇到这样的提示“某某某文件已损坏且无法读取,请运行Chkdsk工具”,这要如何解决? 出 现这一种状况,一般是文件系统目录出现了问题,那“文件系统目录”是什么东西?“文件系统目录”是磁盘中存放目录的一块区域,就好比一个城市和一张地图 (或派出所户籍管理),如果你想找到这个城市中的某个人或者某个地方,有了地图或找到当地的派出所户籍管理处,就

发生未知错误,请确认!系统发生错误,错误代码:0x80070005,请联系当地经销商或者致电8598000-8382!

如果你在使用管家婆过程中遇到下列问题: 管家婆分销ERP V3/A8 "发生未知错误,请确认!发生未知错误" 这种问题,一般是由于破解补丁,回传未破解彻底,导致数据库被锁死!! 需要精准分析锁死数据库部分,进行回传限制级处理才可以继续使用. 一.安装问题 ①安装失败②升级失败③下载不了最新安装包④更换服务器⑤管家婆安装在云端上加密狗共享及数据库同步备份解决方案 二.登录问题 ①silverlight插件安装出现错误代码②输了用户名和密码无法登录③无法显示账套④登录密码忘记⑤后台密码丢失

Spark Streaming架构设计和运行机制总结

本期内容 : Spark Streaming中的架构设计和运行机制 Spark Streaming深度思考 Spark Streaming的本质就是在RDD基础之上加上Time ,由Time不断的运行触发周而复始的接收数据及产生Job处理数据. 一. ReceiverTracker : Receiver数据接收器的启动.接收数据过程中元数据管理,元数据管理是使用内部的RPC. 根据时间的间隔把数据分配给当前的BatchDuration : 通过Dstreams中的StreamID以及这个DStr

如何解决错误0x80071AC3:请运行chkdsk并重试

在使用U盘复制文件的时候提示:一个意外错误使您无法复制该文件,如果您继续收到此错误,可以使用错误代码来搜索有关此问题的帮助.错误0x80071AC3:无法完成操作,因为卷有问题,请运行chkdsk并重试.   出现此提示时,在电脑左下角点击开始菜单,找到运行,(或者直接按住键盘上的win+R键也可以打开运行),如图所示: 2.点击运行,可以看到运行的界面,如图所示: 3.在运行框输入:cmd,打开管理员界面,如图所示: 4.打开管理员界面时,首先我们要确认好U盘在电脑上显示的盘符,到计算机中可以

右下角弹出"Windows-延缓写入失败"或者"xxx-损坏文件 请运行Chkdsk工具"

知识点分析: 任务栏右下角弹出“Windows-延缓写入失败”或者“xxx-损坏文件 请运行Chkdsk工具”. 操作步骤: 方法一:Chkdsk工具 在开始---运行中输入cmd,然后输入chkdsk C: /f 回车运行就表示修复e盘上的错误,并找到坏扇区恢复可读取的信息; 如果要检查的驱动器上有文件打开,需要选择下次重新启动计算机时检查该驱动器,那么重新启动计算机后 chkdsk 会自动检查该驱动器并修复错误. 方法二: 检查选项 打开我的电脑,右键单击需要检测的磁盘---属性---工具选

【转】Scrapy研究探索(三)——Scrapy核心架构与代码运行分析

转自 http://blog.csdn.net/u012150179/article/details/34441655 学习曲线总是这样,简单例子“浅尝”,在从理论+实践慢慢攻破.理论永远是基础,切记“勿在浮沙筑高台”. 一. 核心架构 关于核心架构,在官方文档中阐述的非常清晰,地址:http://doc.scrapy.org/en/latest/topics/architecture.html. 英文有障碍可查看中文翻译文档,笔者也参与了Scraoy部分文档的翻译,我的翻译GitHub地址:h

一个MVC + 三层结构,基于数据库的Web商用系统,通用架构,请看图,,

目标是构思一个抽象的.概念性的.通用性的,能用在大多数Web数据库商用系统,而具体的模式则在此架构上设计, 对UML不熟,所以用WPS画,把图放上来,有兴趣的猿友,如果能看懂,请给些指点,谢谢,有好的建议,我会修改了再放上来. --------------------图片缩小了看不清,请在新标签中打开图片,或者下载图片-------------------------------