你的位置:首页 > 数据库

[数据库]SQL Server 2008 master 数据库损坏解决总结


   SQL Server 2008 master数据库损坏后,SQL SERVER服务启动失败,查看错误日志,你会看到下面错误信息:

2015-10-27 10:15:21.01 spid6s      Starting up database 'master'.
 
2015-10-27 10:15:23.01 spid6s      错误: 9003,严重性: 20,状态: 1。
 
2015-10-27 10:15:23.01 spid6s      The log scan number (227:418:1) passed to log scan in database 'master' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.
 
2015-10-27 10:15:23.01 spid6s      Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.


如果是数据库版本是中文版,你会看到类似下面的错误信息:

传递给数据库 'master' 中的日志扫描操作的日志扫描号 (227:418:1) 无效。此错误可能指示数据损坏,或者日志文件(.ldf)与数据文件(.mdf)不匹配。如果此错误是在复制期间出现的,请重新创建发布。否则,如果该问题导致启动期间出错,请从备份还原。

 

此时解决master数据库的损坏的方法大致有三种:

 

1: 从备份还原master数据库

 

    还原master数据库的前提是你的master有做备份。千万谨记,master也必须备份。很多时候,有些人备份时会忽略这些系统数据库。 一般master、msdb备份是必须的。

 

2: 复制master数据库模板

    如果你没有master备份,那么退而求次,选择从安装目录的Templates拷贝master数据库文件到对应的目录。如果你SQL SERVER安装在C盘,没有修改过安装路径,那么可能就是C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\Templates

 

3:重建master数据库

 

    找到SQL Server 2008的安装介质(插入光盘或拷贝介质到对应目录),在命令窗口将目录更改为setup.exe文件所在目录,然后运行下面命令(具体结合实际情况修改相关参数)

setup.exe
/QUIET
/ACTION=REBUILDDATABASE
/INSTANCENAME=instance_name
/SQLSYSADMINACCOUNTS= accounts
[/SAPWD=password]
[/SQLCOLLATION=collation_name]


    当然有很多细节,如果数据库安装后打过补丁,做过升级,可能需要重新应用这些补丁。具体参考博客“How to Rebuild System Databases in SQL Server 2008”。