一、还原用户数据库
1、“还原数据库”基本操作
(1)目标数据库
在该列表中输入要还原的数据库。您可以输入新的数据库,也可以从下拉列表中选择现有的数据库。该列表包含了服务器上除系统数据库 master 和 tempdb 之外的所有数据库。
注意: 若要还原带有密码保护的备份,必须使用 RESTORE 语句。
(2)目标时间点
将数据库还原到备份的最近可用时间,或还原到特定时间点。默认为“最近状态”。若要指定特定的时间点,请单击“浏览”按钮。
日期和时间按客户端的区域设置指定。
(3)源
“还原的源”面板中的选项可标识数据库的备份集的位置以及要还原的备份集。
源数据库
从该列表框中选择要还原的数据库。此列表仅包含已根据 msdb 备份历史记录进行备份的数据库。
源设备
选择包含要恢复的一个或多个备份的逻辑或物理备份设备(磁带或文件)。
若要选择一个或多个逻辑或物理备份设备,请单击浏览按钮,这将打开“指定备份”对话框。在此,最多可以选择属于一个介质集的 64 个设备。磁带机必须与运行 SQL Server 实例的计算机进行物理连接。备份文件可以位于本地或远程磁带设备上。
退出“指定备份”对话框时,选择的设备将在“源设备”列表中显示为只读值。
(4)备份集
“选择用于还原的备份集”网格中显示可用于指定位置的备份集。每个备份集(单个备份操作的结果)分布在介质集的所有设备上。默认情况下,会建议制定一个恢复计划,以实现基于所选必需备份集执行的还原操作目标。SQL Server Management Studio 使用 msdb 中的备份历史记录来标识还原数据库所需的备份并创建还原计划。例如,为了进行数据库还原,还原计划将选择最近的完整数据库备份,然后选择最近的后续差异数据库备份(如果有)。在完整恢复模式下,还原计划随后将选择所有后续日志备份。
若要覆盖建议的恢复计划,可以更改网格中的选择。如果备份所依赖的备份已取消选择,将自动取消对它们的选择。
2、还原选项
(1)覆盖现有数据库
还原一般会防止意外使用一个数据库覆盖另一个数据库。如果 RESTORE 语句中指定的数据库已存在于当前服务器上,并且指定的数据库名称与备份集中记录的数据库名称不同,则不还原该数据库。这是一项重要的安全保护措施。
注意:应尽可能避免使用 REPLACE,而且在使用该选项之前必须仔细考虑。
使用 REPLACE 选项后,就会忽略还原时通常执行的几项重要安全检查。忽略的检查如下:
还原时使用其他数据库的备份覆盖现有数据库。
使用 REPLACE 选项后,即使指定的数据库名称与备份集中记录的数据库名称不同,还原也允许您使用备份集中任何一个数据库覆盖现有数据库。这会导致一个数据库意外覆盖另一个数据库。
在没有获取结尾日志备份并也没有使用 STOPAT 选项的情况下,使用完整恢复模式或大容量日志恢复模式对数据库进行还原。
使用 REPLACE 选项后,由于没有备份最近写入的日志,您会丢失提交的作业。
覆盖现有文件。
例如,可能会错误地覆盖错误类型的文件,如 .xls 文件或非联机状态的其他数据库正在使用的文件等。如果覆盖现有文件,则即使所还原的数据库是完整的,也有可能丢失某些数据。
(2) 保留复制设置
将已发布的数据库还原到创建该数据库的服务器之外的服务器时,保留复制设置。此选项只适用于在创建备份时对数据库进行了复制的情况。选择此选项等效于在 RESTORE 语句中使用 KEEP_REPLICATION 选项。
仅在选择“回滚未提交的事务,使数据库处于可以使用的状态”选项(在本表的后面部分中说明)时,此选项才可用,其功能等效于使用 RECOVERY 选项还原备份。
(3)还原每个备份之前进行提示
指定在还原了每个备份之后,将显示“继续还原”对话框,询问您是否要继续还原顺序。该对话框将显示下一个介质集(如果已知)的名称以及下一个备份集的名称和说明。
此选项允许您在还原了任何备份后暂停还原顺序。如果必须为不同介质集更换磁带,例如在服务器仅具有一个磁带设备时,此选项非常有用。准备就绪后,请单击“确定”以继续。
可以通过单击“否”中断还原顺序。这样可以使数据库保持还原状态。在日后方便的时候,可以通过恢复执行“继续还原”对话框中所列出的下一个备份,继续该还原顺序。还原下一个备份的过程取决于其是否包含数据或事务日志,如下所示:
如果下一个备份是完整备份或差异备份,请再次使用“还原数据库”任务。
如果下一个备份是文件备份,请使用“还原文件和文件组”任务。
如果下一个备份是日志备份,请使用“还原事务日志”任务。
(4)限制访问还原的数据库
使还原的数据库仅供 db_owner、dbcreator 或 sysadmin 的成员使用。选择此选项等效于在 RESTORE 语句中使用 RESTRICTED_USER 选项。
(5)将数据库文件还原为
显示一个网格,列出数据库的每个数据文件或日志文件的原始完整路径和每个文件的还原目标。可以通过为文件指定新的还原目标,移动您要还原的数据库。
3、注意事项
将 SQL Server 2005 或 SQL Server 2000 数据库还原到 SQL Server 2008 R2 后,该数据库将立即变为可用,然后自动升级。
如果数据库具有全文索引,升级过程将导入、重置或重新生成它们,具体取决于“全文升级选项”服务器属性的设置。如果升级选项设置为“导入”或“重新生成”,则全文索引将在升级过程中不可用。导入可能需要数小时,而重新生成所需的时间最多时可能十倍于此,具体取决于要编制索引的数据量。另请注意,如果将升级选项设置为“导入”,并且全文目录不可用,则会重新生成关联的全文索引。
4、“还原文件和文件组”基本操作
可以指定数据库文件或文件组还原操作。
二、恢复系统数据库
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。
最佳做法: 推荐您根据需要只创建 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]
在安装程序完成系统数据库重新生成后,它将返回到命令提示符,而且不显示任何消息。请检查 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*.*。此搜索将引导您找到包含系统数据库重新生成结果的所有日志文件。打开日志文件,检查其中有无相关错误消息。