MSSQL段落还原脚本,SQLSERVER段落脚本

所属分类: 数据库 / MsSql 阅读数: 461
收藏 0 赞 0 分享

段落还原保持进行检查,以便确保数据库在结束时将是一致的。 在还原顺序结束后,如果恢复的文件有效并且与数据库一致,则恢复的文件将直接变为联机状态。

段落还原适用于所有恢复模式,但在完整恢复模式和大容量日志恢复模式下比在简单恢复模式下更灵活。

所有的段落还原都从称为“部分还原顺序”的初始还原顺序开始。 部分还原顺序至少还原和恢复主文件组,在简单恢复模式下还会还原和恢复所有读/写文件组。 在段落还原顺序中,整个数据库都必须脱机。 随后,数据库将处于联机状态,并且还原的文件组都处于可用状态。 但是,所有未还原的文件组都将保持脱机状态,无法访问。 不过,对于任何脱机文件组,都可以在以后通过文件还原进行还原并进入联机状态。

无论数据库采用何种恢复模式,部分还原顺序都从 RESTORE DATABASE 语句开始,该语句将还原完整备份并指定 PARTIAL 选项。 PARTIAL 选项总是会启动一个新的段落还原;因此,在部分还原顺序的初始语句中,只能指定 PARTIAL 一次。 当部分还原顺序完成并且数据库联机后,由于余下文件的恢复被推迟,这些文件的状态将变为“恢复已挂起”。

此后,段落还原通常包括一个或多个还原顺序,这些还原顺序称为“文件组还原顺序”。 您可以等待执行特定的文件组还原顺序,等待的时间长短由您决定。 每个文件组还原顺序将一个或多个脱机文件组还原并恢复到与数据库一致的点。 文件组还原顺序的时间安排和数量取决于您的恢复目标、您想要还原的脱机文件组数量以及每个文件组还原顺序中还原的脱机文件组的数量。

执行段落还原的精确要求取决于数据库的恢复模式。

下面我们来看看实例:

--段落还原:数据库损坏范围比较大,跨多个数据文件甚至跨文件组的时候,我们不得不恢复整个数据库。
--这时如果数据库特别大,数据库恢复时间将会很长。但我们可以使用SQL Server提供的段落还原,来逐步恢复数据库。
--首先备份尾日志:
BACKUP LOG [AdventureWorks] TO DISK =N'D:\BACKUP_TEST\LOG_BACK_TAIL.trn' WITH NO_TRUNCATE ,NORECOVERY,COMPRESSION,STATS=10
--部分还原主文件组PRIMARY:
RESTORE DATABASE [AdventureWorks] FILEGROUP=N'PRIMARY' FROM DISK=N'D:\BACKUP_TEST\AD_FULL.bak' WITH PARTIAL,NORECOVERY,STATS=10
--还原副文件组MST:
RESTORE DATABASE [AdventureWorks] FILEGROUP=N'MST' FROM DISK=N'D:\BACKUP_TEST\AD_FULL.bak' WITH NORECOVERY,STATS=10
--依次还原日志:
RESTORE LOG [AdventureWorks] FROM DISK=N'D:\BACKUP_TEST\LOG_BACK_1.TRN' WITH NORECOVERY,STATS=10
RESTORE LOG [AdventureWorks] FROM DISK=N'D:\BACKUP_TEST\LOG_BACK_2.TRN' WITH NORECOVERY,STATS=10
--还原尾日志并恢复
RESTORE LOG [AdventureWorks] FROM DISK=N'D:\BACKUP_TEST\LOG_BACK_TAIL.TRN' WITH RECOVERY,STATS=10
--此时AdventureWorks数据库中位于PRIMARY和MST文件组中的文件已经可以访问。
--但是位于其他文件组如:TRN文件组中的表还不能访问。
--消息 8653,级别 16,状态 1,第 2 行
--查询处理器无法为表或视图“****”生成计划,因为该表驻留在不处于联机状态的文件组中。

--接下来还原副文件组TRN:
RESTORE DATABASE [AdventureWorks] FILEGROUP=N'TRN' FROM DISK=N'D:\BACKUP_TEST\AD_FULL.bak' WITH NORECOVERY,STATS=10
--如果数据库不是企业版,以上还原将会提示“尚未备份数据库 "AdventureWorks" 的日志尾部。”
--需要再次备份一次日志尾部,意味着还原副文件组TRN的时候整个数据库都处于正在还原状态。所以对于非企业版而言,只能离线段落还原,个人觉得意义不是很大......
--依次还原日志:
RESTORE LOG [AdventureWorks] FROM DISK=N'D:\BACKUP_TEST\LOG_BACK_1.TRN' WITH NORECOVERY,STATS=10
RESTORE LOG [AdventureWorks] FROM DISK=N'D:\BACKUP_TEST\LOG_BACK_2.TRN' WITH NORECOVERY,STATS=10
--还原尾日志并恢复
RESTORE LOG [AdventureWorks] FROM DISK=N'D:\BACKUP_TEST\LOG_BACK_TAIL.TRN' WITH RECOVERY,STATS=10
--此时位于副文件组TRN中的表已经可以访问了。
--段落还原全部完成

更多精彩内容其他人还在看

SQL Server Alert发送告警邮件少了的原因

这篇文章主要为大家详细介绍了SQL Server Alert发送告警邮件少了的原因,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

分享一下SQL Server执行动态SQL的正确方式

这篇文章主要介绍了SQL Server执行动态SQL正确方式,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL SERVER 中构建执行动态SQL语句的方法

这篇文章主要介绍了SQL SERVER 中构建执行动态SQL语句的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

用非动态SQL Server SQL语句来对动态查询进行执行

此文章主要向大家讲述的是非动态SQL ServerSQL语句执行动态查询,在实际操作中我尝试在一个存储过程中,来进行传递一系列以逗号划定界限的值,来对结果集进行限制。但是无论什么时候,我在IN子句中使用变量,都会得到错误信息
收藏 0 赞 0 分享

SQL Server Parameter Sniffing及其改进方法

这篇文章主要介绍了SQL Server Parameter Sniffing及其改进方法,需要的朋友可以参考下
收藏 0 赞 0 分享

sqlserver实现树形结构递归查询(无限极分类)的方法

下面小编就为大家带来一篇sqlserver实现树形结构递归查询(无限极分类)的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

SQL Server Alwayson添加监听器失败的解决方法

这篇文章主要为大家详细介绍了SQL Server Alwayson添加监听器失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SqlServer将查询结果转换为XML和JSON

这篇文章主要介绍了SqlServer将查询结果转换为XML和JSON的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

MSSQL批量插入数据优化详细

这篇文章主要为大家分享一下批量插入数据的方法,有时候我们需要插入大量的数据那么就需要优惠了,要不根本受不了
收藏 0 赞 0 分享

SQL Server 性能调优之查询从20秒至2秒的处理方法

这篇文章主要介绍了SQL Server 性能调优之查询从20秒至2秒的处理方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多