靠BCP恢复SQL Server 2000数据库
2007-05-15 09:32:43 来源:WEB开发网看到数据库的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的错误。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››恢复误删的Win7便签提示的注册表方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››恢复微软帐户被阻止或被攻击时帐户
- ››Sqlite数据库插入和读取图片数据
更多精彩
赞助商链接