阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 3699|回复: 6

[推荐] 如何重建master数据库

[复制链接]
  • TA的每日心情
    擦汗
    2018-10-9 16:13
  • 签到天数: 343 天

    [LV.8]以坛为家I

    发表于 2011-1-23 12:03:27 | 显示全部楼层 |阅读模式
    如何重建master数据库

    前段时间,本人所在一服务器因突然断电,来电后重新开机出现SQL数据库无法启动,管理软件也无法打开。
    也前也碰到过这种问题,就是备份数据库文件(*.mdf*.ldf文件),重装操作系统及数据库软件,再将数据库文件重新附加的方法。现上网查了下,有好的方法哦,现介绍出来供大家来参考。
    首先打开系统日志文件(控制面板--管理工具--系统日志)
        有两个红色的错误:
        17052:
        无法恢复 master 数据库。正在退出。
    --------
        18052:
        错误: 9003,严重度: 20,状态: 1

    记得曾经在网上有人说是model数据库损坏的缘故,可以将以前备份的文件导入过来或者从其它安装SQL数据库的电脑上拷过来再导入可解决问题,报着试试的心理开始实施了:
         为安全起见,先将D:\Microsoft SQL Server\MSSQL\Data 目录下的*.mdf*.ldf文件两个文件备份了一下(数据库文件和日志文件),然后从另外的一台电脑上将以下文件:master.mdf,master.ldf,modellog.mdf,modeldata.mdf,distmdl.mdf,distmdl.ldf,model.mdf,
    modellog.ldf文件拷到另一个文件夹(注意,拷之前要先停止服务管理器),然后再转移到我那台有问题的服务器上。
    在服务器上打开C:\Program Files\Microsoft SQL Server\80\Tools\Binn文件夹,找到rebuildm.exe文件并运行,重新初始化master,选择文件,按旁边的浏览,指向刚刚从旁边电脑上拷过来的那个文件夹,点确定开始重新初始化,耐心的等待了几分钟,提示成功(有时可能也提示失败,但不要紧,因为是从另外的电脑拷过来的,数据库文件链接不一样),点确定后重启电脑,发现SQL数据库已正常启动了。这时进入SQL企业管理器,发现两个数据库其中有一个数据库没有找到,重新附加那个数据库,验证完后提示成功。进入超市商业管理系统,可正常登陆,修复成功!
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    擦汗
    2018-10-9 16:13
  • 签到天数: 343 天

    [LV.8]以坛为家I

     楼主| 发表于 2011-1-23 12:05:02 | 显示全部楼层
    如果你建立过master的备份,解决办法如下
    1.        使用\Program Files\Microsoft SQLServer\80\Tools\Binn目录下的rebuidm.exe文件重建master数据库。重建master数据库可以使你的数据库文件完整无缺。为以防万一,经常把数据和日志文件备份到一个单独的目录是个不错的主意。

    2. 使用-m参数启动SQL Server,这样可以以单用户模式重新启动SQL Server。

    3. 从最近一次已知最好的备份来还原master数据库。

    4. 核实master数据库是不是已经成功还原:确认所有数据库都已恢复正常运行。从最近一次已知最好的备份来还原msdb数据库。

    5. 以普通模式停止和启动SQL Server。

    6. 向生产用户开放数据库。

    如果这样做没有效,那么重建master数据库然后附加这个数据库。这也是DBA的任务之一,当然你并不希望经常这样做。如果master数据库出现问题,那么服务器上所有的数据库都会出现问题。

    总的来说,恢复时要完成的第一个步骤就是安装一个新的master数据库,使服务器至少能够启动。在此基础上,就可以还原真正的master数据库了。双击了rebuildm.exe之后,将启动rebuild master实用程序,它需要三个参数:

    ① 要恢复的服务器名称。

    ② Master数据库在原来的安装程序中的位置,如果SQL Server的版本为SP2,这个位置应当是安装CD的x86\data目录(在更早的版本中,由于存在程序错误,有可能需要将这个data目录拷贝到硬盘驱动器或者网络驱动器上)。

    ③ 服务器的排序规则。

    这个重建过程将会重新创建全部四个系统数据库以及Northwind和Pubs,接着对服务器进行配置。整个重建过程大约需要数分钟,如果以前使用service pack对服务器进行了升级,将有可能花费更长时间。

    恢复过程的第二个步骤是使用服务器管理或者企业管理器来启动服务器。

    依赖于你的安全性配置,企业管理器很有可能没有连接到服务器的权限。重建master数据库将会丢掉除了sa以外的所有用户登录,并把sa的空口令重置为空。如果要调整企业管理器的连接配置,以便作为sa以空口令连接到服务器,可以编辑SQLServer的注册属性。不要担心sa的空口令,因为我们很快就会恢复真正的master数据库。

    一旦服务器再次运行,你就会发现所有的用户数据库都不见了,因为重建的master数据库没有包含有关这些用户数据库的信息。

    恢复过程的第三个步骤就是将服务器置于单用户模式,以便还原master数据库。在企业管理器中,要完成以下步骤:

    ① 选择服务器。

    ② 使用右键单击它,并从弹出的快捷方式菜单中选择“属性”菜单项,打开“服务器属性”对话框。

    ③ 单击“启动参数”按钮。

    ④ 在“参数”文本框中输入-m,然后按下“添加”按钮。

    ⑤ 按下“确定”按钮关闭“启动参数”对话框,然后关闭“服务器属性”对话框。

    ⑥ 关闭企业管理器。

    警告:在SQL Server实例处于单用户模式时,不要使用企业管理器。这样做有可能会锁定该实例,使它进入不能接受其他连接的状态。

    ⑦ 使用SQL Server服务器管理器停止并重新启动SQL Server实例。

    恢复损坏的master数据库的第四个步骤才是进行真正的还原。因为SQL Server现在处于单用户模式,所以必须使用查询分析器来完成这一步骤。如果试图在企业管理器中还原master数据库,将会产生严重的问题。在查询分析器中进行还原时,需要执行下面的命令:

    RESTORE DATABASE master

    FROM

    DISK=’systembackup’

    WITH FILE=1

    执行结果如下:

    The master database has been successfully restored.

    Shutting down SQL Server.

    SQL Server is terminating this process.

    关闭查询分析器,并使用SQL Server的服务管理器重新启动SQL Server实例。

    还原master数据库的最后一步是把在第三个步骤加入的-m启动参数去掉,将SQL Server实例重新置于多用户状态。要修改这个启动参数,可以使用企业管理器的“服务器属性”对话框。

    关闭企业管理器,使用SQL Server的服务管理器停止并重新启动SQL Server实例。



    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    擦汗
    2018-10-9 16:13
  • 签到天数: 343 天

    [LV.8]以坛为家I

     楼主| 发表于 2011-1-23 12:06:00 | 显示全部楼层
    由于操作系统或SQL Server的崩溃,可能需要重新安装SQL Server 2005,而在生产中的数据中肯定会有应用到各个项目中的用户名和密码,也会有各种各样的作业,如果再一一重建,可能会出现错误的设置或作业的不完成等现象,那么我们就需要在平时的生产中经常备份系统数据库,在必要的时候还原相应的数据库即可。

      
      还原master数据库(用户信息)
        master数据库存储了登录SQL Server的用户名及密码、权限等信息,还原此数据库必须以独占方式启动SQL Server,方法是:
        1.在 SQL Server 配置管理器中,单击“SQL Server 服务”。
        2.在右窗格中,右键单击 SQL Server ( <实例名>),再单击“属性”。
        3.在“高级”选项卡的“启动参数”框中,键入以分号 (;) 分隔的参数。
            例如,若要以单用户模式启动,请在现有启动选项之前插入 -m;,然后重新启动数据库。
            单击“确定”。
        4.重新启动数据库引擎。
        5.打开“开始”-“运行”,输入:sqlcmd  (打开SQLCMD工具)
        6.输入如下脚本:
            1> RESTORE DATABASE master FROM DISK = 'Z:\存储master完整备份的文件地址\master.bak';
            2> GO
        7.结束单用户模式的使用之后,若要以正常的多用户模式重新启动服务器实例,必须先从“启动参数”框中删除 -m;,重新启动SQL Server服务。
        这样Master数据库就恢复到以前的备份了,看原来的用户是不是已经又原来出来了?

      
        还原msdb数据库 (作业信息)
        msdb数据库存储了SQL Server的维护计划和作业等信息,还原此数据库必须以单个用户的方式访问这个msdb数据库,然后才可以还原,方法是:
        打开msdb数据库的属性窗口,选择左边的“选项”,将右边的“状态-限制访问”的值设置为:SINGLE_USER,然后在msdb数据库上点右键选择还原即可,看作业等是不是都还原回来了。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2014-9-12 09:16
  • 签到天数: 255 天

    [LV.8]以坛为家I

    发表于 2011-1-23 12:49:29 | 显示全部楼层
    学习了,不知道有人知道不,我看不到我建的数据库,但是用是可用的
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2013-2-24 19:40
  • 签到天数: 305 天

    [LV.8]以坛为家I

    发表于 2011-1-28 16:16:55 | 显示全部楼层
    学习一下,原来还可以这样作的,看来什么都要备份下,以防不测
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2012-12-6 11:05
  • 签到天数: 714 天

    [LV.9]以坛为家II

    发表于 2011-1-29 10:36:55 | 显示全部楼层
    回复 lantiansdf 的帖子

    C:\Program Files\Microsoft SQL Server\MSSQL\Data 到这里面看看有没有数据库文件
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2014-9-12 09:16
  • 签到天数: 255 天

    [LV.8]以坛为家I

    发表于 2011-1-31 22:34:43 | 显示全部楼层
    好,谢谢!!!!!!!新年快乐
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表