昆明做网站建设多少钱,湛江高端网站开发,二手房,网站建设哪家公司便宜本篇文章是系列文章中的第五篇#xff0c;是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解#xff0c;可以参看本系列之前的文章#xff1a; 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----…本篇文章是系列文章中的第五篇是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解可以参看本系列之前的文章 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----事务日志在修本篇文章是系列文章中的第五篇是对前一个日志系列的补充篇。如果您对日志的基本概念还没有一个比较系统的了解可以参看本系列之前的文章浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色简介日志的作用是保证持久性和数据一致性通过日志可以实现数据的Undo与Redo因此通过日志SQL Server不仅仅可以实现灾难恢复还可以通过日志的Redo来实现高可用性。本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色。日志损坏日志可能会由于IO子系统的故障而损坏当出现日志损坏时如果您对日志的原来略有了解并能在日志损坏的情况下尽量挽救数据那么感觉一定是非常好的-)下面我们来了解几种日志损坏的情况下的恢复情况。1.数据库正常关闭日志损坏。当数据库正常关闭时日志损坏就不是那么重要了因为此时数据库中所有提交的事务对应的脏数据都已经CheckPoint到物理磁盘因此不存在数据不一致的问题。因此如果MDF和NDF文件完好直接指定 FOR ATTACH_REBUILD_LOG参数后附加即可如图1所示。图1.如果数据库正常关闭直接附加即可但值得注意的是使用该方式附加数据库会自动重建日志文件日志文件大小为0.5MB也就是2个VLF自动增长为10%因此您需要手动再来设置一下日志的大小避免出现太多VLF的情况。2.数据库非正常关闭日志损坏在讲述这种情况之前我们首先来看数据库所能处在的几种状态一个完整的模型如图2所示。图2.数据库所能处在的状态关系上面的几种状态的具体转换关系超出了本文的讨论范围香港虚拟主机但是这里我会强调两种和日志损坏关系很大的状态RECOVERY_PENDING和SUSPECT状态。假如出现了数据库没有正常关闭也就是还有数据没有CheckPoint到磁盘如果数据库要启动就必须经历Recovery过程如果日志损坏则无法进行该Recovery过程就会造成数据不一致的问题。此时数据库可能处于下面两种状态之一RECOVERY_PENDING:需要运行crash recovery但该过程由于资源等待无法开始比如说日志完全损坏SUSPECTcrash recovery已经开始但无法完成因此处理该类情况要基于您所在的业务环境是否允许数据损失可以选择从备份中恢复数据或是将数据库状态改为EMERGENCY。EMERGENCY模式意味着数据库跳过crash recovery阶段虚拟主机香港虚拟主机此时虽然可以访问数据库但是会存在数据事务不一致的问题如果仅仅是某些数据页不一致还好但如果是对表结构修改的事务存在那就可能存在数据库架构不一致的问题。如果您没有合适的备份集那只能通过该方式来恢复数据。将数据库设置为EMERGENCY模式非常简单如代码清单1所示。ALTER DATABASE AdventureWorks2012 SET EMERGENCY本文原创发布php中文网转载请注明出处感谢您的尊重