`
izuoyan
  • 浏览: 9225347 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Microsoft SQL Server事务日志的应用

阅读更多

我们知道,SQL Server事务日志主要是用来记录所有事务对数据库所做的修改,如果系统出现故障,它将成为最新数据的唯一来源。日志的操作常有以下几个应用:

一、事务日志文件LDF的丢失

当我们不小删除或者LDF文件丢失的时候,数据库只剩下MDF文件,此时直接通过附 加MDF是无法恢复数据库的,那我们怎么样才能恢复数据库呢?我们可以把SQL Server的日志文件分为两种形式:一类是无活动事务的日志,另一类是有活动事务的日志,我们分别根据两种情况来进行数据库恢复。

1、无活动事务的日志恢复

当文件并没有发生活动性的日志,我们就可以很容易的利用MDF文件就可以直接恢复数据库了,具体操作方法如下:

(1)数据库要是没有日志,就会处于置疑的状态,我们先可以通过企业管理器中在对应数据库中点击右键,然后在“所有任务”下选择“分离数据库”把数据库进行分离;

(2)利用MDF文件附加数据库生成新的日志文件,可用企业管理器中数据库点击右键选择“所有任务”下的“附加数据库”把数据库附加上。

这样就可以直接恢复好数据库了,而如果数据库的日志文件中含有活动事务,利用此方法就不能恢复数据库,所以得使用下面的方法。

2、有活动事务的日志恢复

当日志发生了事务的记录,丢失的时候,我们采用如下的方法来实现:

(1)新建一个同名的数据库,如原数据库名为MYDB,然后停止SQL Server服务器,再把数据库主数据MDF文件移走,然后重新启动SQL Server服务器,新建一个同名的数据库MYDB,然后再停止SQL Server服务器,把移走的MDF文件再覆盖回来,然后再重新启动SQL Server服务器,在默认的情况下,系统表是不允许被修改的,我们需要运行以下语句才可以,在查询分析器中,选择Master数据库,然后执行:

Sp_configure 'allow updates',1

Reconfigure With Override

接着运行以下语句,把Sysdatabases表中MYDB数据库的status属性设为‘37268’,把MYDB数据库设置为紧急模式。

update sysdatabases set status=32768 where name=’MYDB’

然后再把数据库MYDB设置为单用户模式,然后重启SQL Server服务器,并把数据库MYDB设为单用户模式

Sp_dboption 'MYDB','single user', 'true'

再运行以下语句,检查数据库MYDB

DBCC CHECKDB(‘MYDB’)

(2)还原数据库的状态

运行以下语句,就可以把数据库的状态还原:

Update Sysdatabases Set status=28 Where name=’MYDB’

Sp_Configure ’allow updates’,0

Reconfigure With Override

此时的数据库仍不能工作,还要进行以下的操作,才能恢复。

(3)利用DTS的导入导出向导,把数据库MYDB导入到一个新建数据库 MYDBNEW中,然后新建一个数据库MYDBNEW,右击MYDBNEW,选择“所有任务”下的“导出数据”功能,打开导入向导,把表结构、数据视图和 存储过程导入到MYDBNEW中,然后再用此功能把MYDBNEW库替换成原来的MYDB库即可。

可以知道,恢复一个有活动事务的日志是麻烦多了,所以在数据库维护的时候,切不要小看事务日志。

二、事务在不断增大的时候如何缩小日志

当数据如在频繁修改或者删除的同时,事务的日志就会不断的增加,甚至超过了碰盘的大小,这时候就不能因此而直接删除了事务日志的LDF文件,否则可能会带来很大的麻烦。为了避免这种情况,我们需要有如下的操作:

(1)尽量避免tempdb 日志与用户数据库日志放在同一磁盘上,tempdb 数据库和事务日志具有足够的空间来处理索引操作。不能在索引操作完成之前截断 tempdb 事务日志。

(2)通过执行下列命令来缩小事务日志

DBCC SHRINKDATABASE

DBCC SHRINKFILE

操作会立即尝试将物理日志文件收缩为所要求的大小。

如果虚拟日志文件中的逻辑日志未超出 target_size 标记,则释放 target_size 标记之后的虚拟日志文件,并成功完成 DBCC 语句,不显示任何信息。

如果虚拟日志中的逻辑日志超出了 target_size 标记,SQL server Database Engine 将释放尽可能多的空间并显示一个信息性消息。该消息告诉您必须执行什么操作来从文件尾部的虚拟日志中删除逻辑日志。执行完该操作后,可以重新发出 DBCC 语句以释放剩余的空间。

DBCC SHRINKFILE 语句还显示一个信息性消息,指出它不能释放所要求的全部空间,并告诉您可以执行 BACKUP LOG 语句来释放剩余的空间。

三、事务日志的还原

事务日志在还原的时候可以选择三种恢复模式:简单模式、完整模式和大容量日志模式。

简单恢复模式

此模式简略地记录大多数事务,所记录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致性。

由于旧的事务已提交,已不再需要其日志,因而日志将被截断。截断日志将删除备份和还 原事务日志。但是,这种简化是有代价的,在灾难事件中有丢失数据的可能。没有日志备份,数据库只可恢复到最近的数据备份时间。如果您使用的是 sql server Enterprise Edition,需要考虑此问题。此外,该模式不支持还原单个数据页。

完整恢复模式

此模式完整地记录了所有的事务,并保留所有的事务日志记录,直到将它们备份。在 sql server Enterprise Edition 中,完整恢复模式能使数据库恢复到故障时间点。

大容量日志恢复模式

此模式简略地记录大多数大容量操作(例如,索引创建),完整地记录其他事务。

大容量日志恢复提高大容量操作的性能,常用作完整恢复模式的补充。大容量日志恢复模 式支持所有的恢复形式,但是有一些限制,备份包含大容量日志记录操作的日志时,需要访问数据库内的所有数据文件。如果数据文件不可访问,则无法备份最后的 事务日志,而且该日志中所有已提交的操作都将丢失。 来源:赛迪网作者:Alizze

分享到:
评论

相关推荐

    java提取并分析sqlserver的日志

    在Windows系统中,SQL Server错误日志通常位于`%ProgramFiles%\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\LOG`目录下,交易日志则与数据库文件在同一目录下。 3. **Java连接SQL Server**: 要从SQL Server...

    sqlserver日志查看工具

    - **日志查看**:能够直接读取并显示SQL Server的事务日志,无需备份或分离数据库,提供了一种直观的方式来查看日志内容。 - **日志回滚**:允许用户执行日志中的操作的逆过程,这在误操作后恢复数据非常有用。 -...

    SQLSERVER日志分析工具

    SQLSERVER日志分析工具是一种专门针对Microsoft SQL Server数据库系统设计的实用软件,旨在帮助数据库管理员和开发者有效地管理和解析SQL Server的日志数据。日志分析在数据库管理中扮演着至关重要的角色,因为它能...

    SQL Server 2000 日志浏览器

    SQL Server 2000日志浏览器,全称为Microsoft SQL Server 2000 Log Explorer,是一款用于查看和分析SQL Server事务日志的工具。在数据库管理中,事务日志至关重要,因为它记录了所有数据库更改操作,对于数据恢复、...

    Microsoft SQL Server 2008 Internals (PDF 高清版)

    6. **日志管理**:探讨事务日志的作用及其管理技术,包括日志记录格式、日志清理流程等。 7. **故障转移集群**:讲解SQL Server故障转移集群的配置与管理,包括集群架构、故障转移策略等。 #### 书籍特点 - **深度...

    如何解决SQL Server日志满问题

    2. 截断事务日志:使用 BACKUP LOG 语句截断事务日志。 BACKUP LOG 数据库名 WITH NO_LOG 3. 收缩数据库文件:使用 DBCC SHRINKDATABASE 语句收缩数据库文件。 DBCC SHRINKDATABASE(客户资料) 也可以使用 DBCC ...

    深入解析sqlserver 2008 Microsoft SQL Server 2008 Internals

    《SQL Server 2008 Internals》是微软技术专家David Campbell作序的一本深入解析Microsoft SQL Server 2008内部机制的专业书籍。由Paul S. Randal、Kimberly L. Tripp、Conor Cunningham、Adam Machanic和Ben ...

    SQL Server事务日志与数据库的维护.pdf

    综上所述,SQL Server事务日志是数据库安全性和数据恢复的关键机制。理解事务日志的工作方式和维护策略对于数据库的高效运行和快速故障恢复至关重要。通过合理的日志备份和管理操作,可以最大限度地保障数据的安全性...

    Win10可用的Microsoft SQL Server 2008 Native Client

    Microsoft SQL Server 2008 Native Client是在Windows 10操作系统上使用的一种数据库连接组件,它为应用程序提供了与SQL Server交互的能力。这个组件是专为SQL Server设计的,旨在提高性能、安全性和兼容性,特别是...

    Professional Microsoft SQL Server 2008 Administration

    4. **备份与恢复**:详述SQL Server 2008的备份策略,包括完整备份、差异备份、事务日志备份,以及如何执行恢复操作,以应对数据丢失或系统故障。 5. **性能调优**:涵盖监控和分析SQL Server性能的方法,如使用...

    SQLServer数据库日志分析数据恢复工具

    在这个场景下,"SQLServer数据库日志分析数据恢复工具"正是为了解决这类问题而设计的。下面将详细阐述其关键知识点。 首先,SQL Server的日志系统,即事务日志(Transaction Log),是数据库恢复模型的基础。每当在...

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    - **事务处理**:阐述了事务的基本概念及其在SQL Server中的实现方式,包括如何使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句来确保数据的一致性和完整性。 #### 四、性能优化与最佳实践 为了帮助读者更好地利用...

    Inside Microsoft SQL Server 2008 T-SQL Programming

    《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入探讨了SQL Server 2008中的T-SQL编程技术,这是SQL Server数据库管理与开发的核心语言。T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的...

    SQL日志清理工具 清理sql server日志的一个小工具

    SQL日志清理工具是针对Microsoft SQL Server数据库管理系统设计的一款实用程序,主要功能是帮助管理员有效管理和清理数据库的日志部分,即事务日志(Transaction Log)。事务日志在SQL Server中扮演着至关重要的角色...

    SQL server日志收缩工具

    在SQL Server中,事务日志是数据库引擎的关键组成部分,用于跟踪所有的更改操作,确保数据的一致性和可恢复性。然而,随着时间的推移,特别是当数据库经历大量事务活动时,日志文件可能会迅速增长,占用大量的磁盘...

    SQL Server 2005数据库应用与开发习题解答与上机指导前50面大部分选择题与思考题答案照片

    SQL Server 2005提供了多种备份类型,如完整备份、差异备份和事务日志备份,学习者需掌握各种备份策略及其恢复技术。 5. **分析服务**:SQL Server 2005集成了Analysis Services,用于在线分析处理(OLAP)和数据...

    Microsoft SQL Server 2005技术内幕:存储引擎(中文).pdf

     微软SQL Server 总部Principal Group 项目经理朱凌志鼎力推荐  本书详细介绍了数据引擎的基础运作,包含了数据库的设定与数据实际在硬盘的摆放、索引结构、事务与锁定等。除了解释设计理念与运作原理外,还辅之...

    SQL server应用程序

    标题中的"SQL Server应用程序"指的是基于Microsoft SQL Server开发的应用程序,这是一个关系型数据库管理系统,广泛应用于数据存储、管理和分析。SQL Server提供了丰富的功能,包括事务处理、数据分析、数据仓库、...

Global site tag (gtag.js) - Google Analytics