快速业务通道

管理 SQL Server 的事务日志

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-21
在 SQL Server 实例中的每一个数据库,都有一个日志,它记录着数据库的所有更改。由于这个日志是独立的,在更改发生之前,事务日志允许在硬件故障或应用程序错误时,对数据库回滚或保存事务。由于它的角色的重要性,事务日志被保存在一个或多个与数据库文件独立的日志文件中;日志记录是在内容的变更从缓存写到数据库文件中以前发生的。

对每个数据库,事务日志支持以下操作:
当发出一个回滚操作或数据库引擎检测到一个错时,进行事务回滚;
服务器失改时,进行一个完整的事务回滚。这个事务在SQL Server 重启时进行回滚。
当服务器失败时,将未完成的事务写入到日志文件,而不是数据文件中。当 SQL Server 重启时,这些未完成的事务将会写入数据文件。
当发生硬件错误时,对恢复的数据库、文件组、文件或页向前滚动到失败点。事务将滚动到最后一个完整备份或差异备点。
对事务复制、数据库镜像、日志传输提供支持。

这些记录事务日志的文件,会由数据库引擎根据物理文件的实际情况,自动地分解为多个虚拟文件。数据库引擎也会判断在何时对哪些虚拟文件进行截断。你可以指定物理日志文件的最小值和最大值,并可以配置扩展文件时的增长率。另外,你可以向日志增加物理文件、删除文件、增加日志的大小或收缩日志。


在这篇文章中,我将解释如何执行这些任务,以开始管理你的事务日志,同时,我提供了一些例子以演示每一个任务如何工作。在这些例子中,我使用位于本地 SQL Server 2008 实例上的 EmplyeeDb 数据库:

USE master;

IF EXISTS
(
  SELECT name FROM sys.databases
  WHERE name = ''EmployeeDB''
)
DROP DATABASE EmployeeDB;

CREATE DATABASE EmployeeDB
ON
(
  NAME = EmployeeDB_dat,
  FILENAME = ''C:\SqlData\EmployeeDb.mdf''
)
LOG ON
(
  NAME = EmployeeDB_log,
  FILENAME = ''C:\SqlData\EmployeeDb.ldf''
);


注意:我是在一个指定的位置上创建了一个数据库文件,而不是 SQL Server 默认的位置。如果运行这段代码,可以将数据库定位到你想指定的位置。创建数据库以后,我可以使用 SELECT...INTO 语句从AdventureWorks2008 数据库创建表,并传输数据。

USE EmployeeDB;

IF OBJECT_ID(''Employees'', ''U'') IS NOT NULL
DROP TABLE dbo.Employees;

SELECT BusinessEntityID,
  FirstName,
  LastName,
  JobTitle,
  PhoneNumber,
  EmailAddress,
  AddressLine1,
  AddressLine2,
  City,
  StatePRovinceName,
  PostalCode,
  CountryRegionName  
INTO dbo.Employees
FROM AdventureWorks2008.HumanResources.vEmployee;

你不一定非要在这个数据库中执行这段代码,但是它作为一个小小的测验,有助于你学习事务日志的有关内容。如果你计划使用另外的数据库,只需要替换一下例子代码中的数据库名称即可。

配置恢复模式

每个 SQL Server 数据库都有一个恢复模式属性,(the Recovery Model), 它指示事务日志如何记录,如:事务日志是否可以被备份,以及恢复操作的许可类型。默认情况下,一个新的数据库从 Model 数据库继承了一个恢复模式 。当然,你也可以修改默认设置为其它模式。

你可以配置一个 SQL Server 数据库的恢复模式为以下几种之一:
简单模式(Simple): 在这种模式下,事务日志的备份是不安全的,这意味着你不能对备份之后的事务日志进行管理。这种模式也会自动的扩展日志空间,所以几乎不需要去管理事务日志的空间。然而,这种模式也是风险最大的一种模式

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号