今天很不巧,早上上班一开机刚刚启动到快输入密码时就停了电。下午来电后开机一看,居然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!问题解决了。 心得:看来以后遇到系统问题不能总走重装的老路,这样对自己才有提高。
(ixmy) |