(5.1.3)故障排除——恢复系统数据库

一、恢复系统数据库

  SQL Server 维护一组系统级数据库(称为“系统数据库”),这些数据库对于服务器实例的运行至关重要。

1、系统数据库的成员

(1) master 记录 SQL Server 系统的所有系统级信息的数据库。若要还原任何数据库,必须运行 SQL Server 实例。只有在 master 数据库可供访问且至少部分可用时,才能启动 SQL Server 实例。

  可以将 master 数据库的恢复模式设置为 FULL 或 BULK_LOGGED。但是,master 数据库不支持 BACKUP LOG。

(2) msdb 是SQL Server 代理用来安排警报和作业以及记录操作员信息的数据库。msdb 还包含历史记录表,例如备份和还原历史记录表。

  如果要在恢复用户数据库时使用 msdb 数据库中的备份与还原历史记录信息,则建议对 msdb 数据库使用完整恢复模式。此外,请考虑将 msdb 事务日志放在容错存储设备上。

(3)model 保存在 SQL Server 实例上为所有数据库创建的模板。

  新创建的用户数据库与 model 数据库使用相同的恢复模式。若希望新数据库使用简单恢复模式,请将 model 的恢复模式更改为 SIMPLE。

扫描二维码关注公众号,回复: 6557261 查看本文章

  最佳做法: 推荐您根据需要只创建 model 的完整数据库备份。由于 model 小且很少更改,因此无需备份日志。

(4)tempdb 用于保存临时或中间结果集的工作空间。服务器实例关闭时,将永久删除 tempdb 中的所有数据。

  需要使用简单恢复模式,以便始终自动回收 tempdb 日志空间。不能备份 tempdb 数据库。每次启动 SQL Server 实例时都会重新创建此数据库。

(5) Resource 包含 Microsoft SQL Server 2005 或更高版本附带的所有系统对象副本的只读数据库。这是一个隐藏数据库,位于 mssqlsystemresource.mdf 文件中,该文件仅包含代码。因此,SQL Server 不能备份 Resource 数据库。

  恢复模式无关紧要。SQL Server 备份不能备份 Resource 数据库。

(6)如果有任何数据库在服务器实例上使用了复制,则还会有 distribution 系统数据库。 此数据库存储元数据、各种复制的历史记录数据以及用于事务复制的事务。

2、还原 master 数据库

可以通过下列两种方式之一将该数据库返回到可用状态:

(1)从当前数据库备份还原 master。

  如果可以启动服务器实例,则应能够从完整数据库备份还原 master。只能从对 SQL Server 2008 实例创建的备份中还原 master 数据库。

  如果创建数据库备份后更改了 master 数据库,则那些更改在还原备份时将丢失。若要恢复这些更改,必须执行可以恢复已丢失更改的语句。例如,如果自执行备份后创建了一些 SQL Server 登录名,则这些登录在还原 master 数据库后会丢失。必须使用 SQL Server Management Studio 或创建登录名时使用的原始脚本,重新创建这些登录名。

  重要提示:如果有些数据库已不存在,但在还原的 master 数据库备份中引用了那些数据库,则 SQL Server 可能会由于找不到那些数据库而在启动时报告错误。还原备份后应删除那些数据库。

  还原 master 数据库后,SQL Server 实例将自动停止。如果需要进一步修复并希望防止多重连接到服务器,应以单用户模式启动服务器。否则,服务器会以正常方式重新启动。如果决定以单用户模式重新启动服务器,应首先停止所有 SQL Server 服务(服务器实例本身除外),并停止所有 SQL Server 实用工具(如 SQL Server 代理)。停止服务和实用工具可以防止它们尝试访问服务器实例。

(2)完全重新生成 master。

  如果由于 master 严重损坏而无法启动 SQL Server,则必须重新生成 master。接下来,应该还原最新的 master 完整数据库备份,因为重新生成数据库将导致所有数据丢失。

  重要提示:重新生成 master 将重新生成所有系统数据库。重新生成 master、model、msdb 和 tempdb 系统数据库时,将删除这些数据库,然后在其原位置重新创建它们。如果在重新生成语句中指定了新排序规则,则将使用该排序规则设置创建系统数据库。用户对这些数据库所做的所有修改都会丢失。例如,您在 master 数据库中的用户定义对象、msdb 中的预定作业或 model 数据库中对默认数据库设置的更改都会丢失。

  将 SQL Server 2008 安装介质插入到磁盘驱动器中,或者在本地服务器上,从命令提示符处将目录更改为 setup.exe 文件的位置。在服务器上的默认位置为 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Release。

  在命令提示符窗口中,输入以下命令。方括号用来指示可选参数。不要输入括号。在使用 Windows Vista 操作系统且启用了用户帐户控制 (UAC) 时,运行安装程序需要提升的特权。必须以管理员身份运行命令提示符。

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName]

  分析:

    /QUIET:重建过程中不提示错误与警告。重建完后出现空白屏幕,出现的错误会被记录到错误日志中

    INSTANCENAME:实例名~一般默认是MSSQLSERVER

    SQLSYSADMINACCOUNTS:管理员账号~一般是sa

    SAPWD:管理员密码~~一般是SA的密码

    SQLCOLLATION:排序规则

  在安装程序完成系统数据库重新生成后,它将返回到命令提示符,而且不显示任何消息。请检查 Summary.txt 日志文件以验证重新生成过程是否成功完成。此文件位于 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。

  重新生成数据库后,您可能需要还原 master、model 和 msdb 数据库的最新完整备份。有关详细信息,请参阅备份和还原系统数据库的注意事项。

  重要提示: 如果更改了服务器排序规则,请不要还原系统数据库。否则,将使新排序规则替换为以前的排序规则设置。

  如果没有备份或者还原的备份不是最新的,请重新创建所有缺失的条目。例如,重新创建用户数据库、备份设备、SQL Server 登录名、端点等缺少的所有条目。重新创建这些条目的最佳方法是运行创建它们的原始脚本。

3、还原 model 数据库或 msdb 数据库

  还原 model 或 msdb 数据库与对用户数据库执行完整的数据库还原相同。在下列情况下,需要从备份中还原 model 数据库或 msdb 数据库:

  • 重新生成了 master 数据库。

  • model 数据库或 msdb 数据库已损坏(例如由于媒体故障)。

  • 修改了 model 数据库。在这种情况下,重新生成 master 数据库时必须从备份还原 model 数据库,因为重新生成主控实用工具将删除并重新创建 model 数据库。

  重要提示:只能从在服务器实例当前运行的 SQL Server 版本上创建的备份中还原系统数据库。例如,若要还原在 SQL Server 2005 SP1 上运行的服务器实例上的系统数据库,则必须使用在服务器实例升级到 SQL Server 2005 SP1 之后所创建的数据库备份。

  如果 msdb 包含系统使用的计划或其他数据,则必须在重新生成 master 时从备份还原 msdb,因为实用工具会删除并重新创建 msdb。这将导致丢失所有计划信息以及备份和还原历史记录。如果 msdb 数据库没有还原并且无法访问,则 SQL Server 代理将无法访问或启动任何以前安排的任务。因此,如果 msdb 包含系统使用的计划或其他数据,则必须在重新生成 master 时还原 msdb。

  不能还原用户正在访问的数据库。如果 SQL Server 代理正在运行,它可以访问 msdb 数据库。因此,在还原 msdb 之前,请先停止 SQL Server 代理。

  最佳方法:必要时,RESTORE 会断开与用户的连接;但最好预先关闭应用程序。

  如果针对 msdb 使用建议的完整恢复模式,则可将数据库还原到最近日志备份的时间。

  重要提示:当安装或升级 SQL Server 时,只要使用 Setup.exe 重新生成系统数据库,msdb 的恢复模式便会自动设置为 SIMPLE。

4、重新生成 resource 数据库

  从 SQL Server 2008 分发介质中启动 SQL Server 安装程序 (setup.exe)。

  在左侧导航区域中单击“维护”,然后单击“修复”。

  安装程序支持规则和文件例程将运行,以确保您的系统上安装了必备组件,并且计算机能够通过安装程序验证规则。单击“确定”或“安装”以继续操作。

  在“选择实例”页上,选择要修复的实例,然后单击“下一步”。

  将运行修复规则以验证修复操作。若要继续,请单击“下一步”。

  在“准备修复”页上,单击“修复”。“完成”页指示修复操作已完成。

  重新生成操作完成后,请检查 SQL Server 日志中是否存在任何错误。默认的日志位置是 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs。若要查找包含重新生成过程的结果的日志文件,请从命令提示符处将目录更改到“Logs”文件夹,然后运行 findstr /s RebuildDatabase summary*.*。此搜索将引导您找到包含系统数据库重新生成结果的所有日志文件。打开日志文件,检查其中有无相关错误消息。

5、相关书目章节点参考

  

6、相关参考

  (1)图形与静默安装:https://www.cnblogs.com/gered/p/9355945.html

  (2)从命令提示符安装:http://www.mssqlmct.cn/dba/?post=27

猜你喜欢

转载自www.cnblogs.com/gered/p/11058876.html