SQL Server 2012笔记分享-30:页还原

使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中还原页。 页面还原的目的是还原一个或多个损坏的页,而不还原整个数据库。 通常,要进行还原的页已经由于在访问该页时遇到错误而标记为“可疑”。 可疑页在 msdb 数据库的 suspect_pages 表中进行了标识。

页面还原用于修复隔离出来的损坏页。 还原和恢复少量页面的速度可能比还原一个文件更快,因此减少了还原操作中处于脱机状态的数据量。 然而,如果文件中要还原的不只是少量页面,则通常还原整个文件更为有效。 例如,如果某个设备上的大量页都指出此设备有未解决的故障;不妨考虑还原该文件(可以还原到另一位置)并修复该设备。

此外,并非所有的页面错误都需要还原。 缓存数据(例如辅助索引)中可能出现的问题可以通过重新计算这些数据来解决。 例如,如果数据库管理员删除一个辅助索引,然后再重新生成一个辅助索引,则损坏的数据虽然已修复,但并没有在 suspect_pages 表中反映出这一情况。

页面还原适用于使用完整或大容量日志恢复模式的 SQL Server 数据库。 只有读/写文件组支持页面还原。

仅能还原数据页,以下类型的页面不能还原:

  1. 分配页:IAM, GAM, SGAM, PFS 

  2. 第0页(文件首页) 

  3. 第9页(数据库启动页)

执行页面还原的最佳做法是将数据库设置为完整恢复模式,并尝试进行一次日志备份。 如果可以进行日志备份,则可以继续进行页面还原。 如果日志备份失败,则您将不得不丢失上一个日志备份之后的工作,或必须尝试运行 DBCC(必须使用 REPAIR_ALLOW_DATA_LOSS 选项)。

=========================================================================

脱机页面还原

SQL Server 2005 的所有版本和更高版本都支持在数据库脱机时还原页面。 在脱机还原页过程中,还原损坏的页时数据库处于脱机状态。 还原顺序结束时,数据库将联机。

联机页面还原

SQL Server 2005 Enterprise Edition 和更高版本支持联机页面还原,但它们在数据库当前处于脱机状态时将使用脱机还原。 在大多数情况下,可以在数据库(包括页面要还原到的文件组)保持联机状态时还原损坏的页。 在主文件组处于联机状态时,即使有一个或多个辅助文件组处于脱机状态,页面还原也通常联机执行。 但有时候,损坏的页可能需要脱机还原。 例如,某些重要的页发生损坏可能会使数据库无法启动。

注意

如果损坏的页存储了重要的数据库元数据,则在联机页面还原尝试过程中对元数据的必需的更新可能失败。 在此情况下,您可以执行脱机页面还原,但首先,您必须创建一个结尾日志备份(通过使用 RESTORE WITH NORECOVERY 备份事务日志)。

页面还原利用了 SQL Server 2005 中引入的改进的页级错误报告(包含页校验和)和跟踪。 通过校验和或残缺写操作检测为已损坏的页(“损坏页”)可以通过页还原操作进行还原。 仅还原显式指定的页。 每个指定页都被来自指定数据备份的页的副本替换。

========================================================================

右击要进行页还原的数据库,选择任务――还原――页。

截图16

可以运行“检查数据库页”来查找数据库中损坏的数据,即运行dbcc checkdb physical_onlly。

截图17

也可以手动输入要还原的页的文件ID和页ID,如图。

截图18

输入完成后,点击确定。如图。

截图19

注意:

还原页实际上也是从现有的备份中进行还原的,所以在进行页还原之前,一定要确保有数据备份,即做了完整+事务日志的备份,如下图。

截图20

我们还可以通过查看下面的系统表来确定错误页,如图。

dbo.suspect_pages在系统默认数据库msdb中。

截图21

也可以执行命令来查看,如下图

截图23

最后,通过一个个点击查看,我发现mater和msdb数据库默认处于简单恢复模式下,所以不能进行还原页的操作,而model数据库默认处于完整恢复模式下,可以进行页还原的操作,至于tempdb,因为是临时数据库,

所以没有备份还原的选项,只有收缩的选项。

=====================================================================

本文出自 “曾垂鑫的技术专栏” 博客,谢绝转载!

你可能感兴趣的:(sql,数据库,server,2012,页还原)