管理 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于管理 SQL Server 的事务日志的所有评论