WEB开发网
开发学院数据库MSSQL Server 靠BCP恢复SQL Server 2000数据库 阅读

靠BCP恢复SQL Server 2000数据库

 2007-05-15 09:32:43 来源:WEB开发网   
核心提示: 看到数据库的status=1073741840,下面我们的目标是要将这个值修改到32768(紧急模式)再到16(假正常模式,靠BCP恢复SQL Server 2000数据库(3),这是我在这个故障处理中的叫法),缺省情况下,这时,数据库处理算是成功一半!这个假正常模式(我的叫法)还是不能做

看到数据库的status=1073741840,下面我们的目标是要将这个值修改到32768(紧急模式)再到16(假正常模式,这是我在这个故障处理中的叫法)。

缺省情况下,SQL Server不允许修改status值。直接作update,系统提示服务器: 消息 259,级别 16,状态 2,行 1未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。

所以先执行SQL脚本,让SQL Server允许我们修改status值:

sp_configure 'allow updates', 1

RECONFIGURE WITH OVERRIDE

修改status到32768(紧急模式),执行SQL脚本:

update SysDatabases

set status=32768

where name='zytk'

在查询分析器中执行SQL脚本,检查数据库完整性。

dbcc checkdb ('ZYTK') with ALL_ERRORMSGS

执行结果有很多错误(具体执行结果见03CheckDB-ZYTK结果.txt),跟笔者估计一致,数据库的索引出了大问题。下面摘录其中一个错误:

对象 'cw_Check_Detail' 有 0 行,这些行位于 0 页中。

服务器: 消息 8936,级别 16,状态 1,行 1

表错误: 对象 ID 181575685,索引 ID 1。B 树链的链接不匹配。(1:4987)->next = (1:2601),但 (1:2601)->Prev = (1:4947)。

在查询分析器中执行SQL脚本,将数据库ZYTK的status修改为16:

update SysDatabases

set status=16

where name='zytk'

刷新数据库,ZYTK(紧急模式)转变为ZYTK。注意此时不能重新启动SQL Server服务!否则数据库ZYTK的状态还会变成置疑。这时,数据库处理算是成功一半!这个假正常模式(我的叫法)还是不能做数据库备份的。否则会提示如图5的错误。

上一页  1 2 3 4 5  下一页

Tags:BCP 恢复 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接