二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server 错误: 9003修复记

Posted on 2005-05-18 18:15  二十四画生  阅读(9754)  评论(3编辑  收藏  举报

  今天很不巧,早上上班一开机刚刚启动到快输入密码时就停了电。下午来电后开机一看,居然SQL Sever启动不了。查看数据库日志出现以下错误:
错误: 9003,严重度: 20,状态: 1
The LSN (6:222:1) passed to log scan in database 'model' is invalid.
错误: 9003,严重度: 20,状态: 1
LSN (6:222:1) 无效。该 LSN 是传递给数据库 'model' 中的日志扫描操作的。

  查看联机帮助,无果。重装数据库,反正是自己机器上的数据都无关紧要。还好服务器一切正常,需要数据从服务器上导入即可。不过为了省去重装的麻烦还是先上网搜索了一下。尝试修复错误,总比动不动重装要有所提高。

上网搜寻结果如下:

应该是数据文件或者日志文件损坏了。
1)设置数据库为紧急模式
停掉SQL Server服务;
把应用数据库的数据文件XXX_Data.mdf移走;
重新建立一个同名的数据库XXX;
停掉SQL服务;
把原来的数据文件再覆盖回来;
运行以下语句,把该数据库设置为紧急模式;
运行“
Use Master
Go
sp_configure 
'allow updates'1
reconfigure with override
Go

执行结果:
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 
'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。

接着运行“
update sysdatabases set status = 32768 where name = 'XXX'


重启SQL Server服务;
运行以下语句,把应用数据库设置为Single User模式;
运行“sp_dboption 
'XXX''single user''true'

执行结果:
命令已成功完成。

做DBCC CHECKDB;

运行“
DBCC CHECKDB('XXX')”
运行以下语句把系统表的修改选项关掉;
运行“sp_resetstatus "XXX"
go
sp_configure 
'allow updates'0
reconfigure with override
重新建立另外一个数据库XXX.Lost;
2)DTS导出向导
运行DTS导出向导;

这样,XXX.Lost数据库就可以替换原来的应用数据库了。

  看了文章发现要修复还是挺复杂的,重新看日志,发现问题是出在model数据库。我想我不如把我的另外一个数据库实例中的model数据库直接Copy过来不就行了,反正model数据库用作在系统上创建的所有数据库的模板。应该实例中的model数据库和要恢复的差不多吧。后来把实例数据库中的model.mdf覆盖过来,重启数据库服务。居然好了,用了一阵也一切正常。OK!问题解决了。
  心得:看来以后遇到系统问题不能总走重装的老路,这样对自己才有提高。