您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

如何防止SQL Server数据库的事务日志异常增长

添加时间:2013-2-19 16:03:17  添加: 思海网络 

当事务日志扩展到无法接受的限度时您必须执行的步骤。事务日志的扩展会导致 Microsoft SQL Server 数据库无法使用。

  在 SQL Server 2000 中,每个数据库都至少包含一个数据文件和一个事务日志文件。SQL Server 2000 在该数据文件中以物理方式存储数据。事务日志文件存储您对 SQL Server 数据库执行的所有修改的详细信息,以及执行每个修改的事务的详细信息。由于事务完整性被视为 SQL Server 的一个基本而固有的特点,因此不能在 SQL Server 2000 中关闭对事务详细信息的记录。

  在逻辑意义上,事务日志文件被划分为更小的段,这些段被称为虚拟日志文件。在 SQL Server 2000 中,您可以将事务日志文件配置为根据需要扩展。用户可以控制事务日志的扩展,也可以将其配置为使用所有可用的磁盘空间。SQL Server 对事务日志文件大小所做的任何修改(如截断或增长事务日志文件)都是以虚拟日志文件为单位执行的。

  如果与 SQL Server 数据库相对应的事务日志文件被充满,而且事务日志文件选项被设置为自动增长,则事务日志文件将以虚拟日志文件为单位增长。有时,事务日志文件可能变得非常大,以致没有足够的磁盘空间。如果事务日志文件不断增长,致使日志文件占用了所有可用的磁盘空间而无法继续扩展,则将无法再对数据库执行任何数据修改操作。不仅如此,由于事务日志缺乏扩展空间,SQL Server 可能会将您的数据库标记为可疑数据库。

  减小事务日志的大小

  如果事务日志已经增长到无法接受的限度,而您希望从这种状况中恢复,则必须减小事务日志的大小。为此,必须截断事务日志中非活动的事务并收缩事务日志文件。

  注意:事务日志对于维护数据库的事务完整性非常重要。因此,即使您为数据库和事务日志制作了备份,也不得删除事务日志文件。

  截断事务日志中非活动的事务

  当事务日志增长到无法接受的限度时,您必须立即备份事务日志文件。创建事务日志文件的备份后,SQL Server 会自动截断事务日志的非活动部分。事务日志文件的非活动部分包含已完成的事务,因此,在恢复过程中 SQL Server 将不再用到事务日志文件。SQL Server 会重新利用事务日志中这段被截断的非活动空间,而不会允许事务日志继续增长并占用更多空间。

  还可以通过截断的方法,从事务日志文件中删除非活动的事务。有关截断事务日志的其他信息,请参见 SQL Server 联机丛书中的“截断事务日志”主题。

  重要说明:手动截断事务日志文件后,必须在创建事务日志备份之前创建一个完整的数据库备份。

  收缩事务日志文件

  备份操作或截断方法都不会减小日志文件的大小。要减小事务日志文件的大小,必须收缩事务日志文件。要将事务日志文件收缩到所需大小并删除无用的页面,您必须使用 DBCC SHRINKFILE 操作。DBCC SHRINKFILE Transact-SQL 语句只能收缩日志文件中的非活动部分。

  注意:当 DBCC SHRINKFILE Transact-SQL 语句单独使用时,不能截断日志并收缩日志文件中的已用空间。

  防止事务日志文件异常增长

  要防止事务日志文件异常增长,建议使用以下方法之一:

    • 将事务日志文件的大小设置为一个较大值,以避免事务日志文件自动扩展。

  • 充分评估最佳内存大小后,使用内存单位而不是百分比来配置事务日志文件的自动扩展。

  • 更改恢复模型。如果发生灾难或数据损坏,您必须恢复数据库,以维护数据库数据的一致性和事务的完整性。根据数据在数据库中的重要程度,您可以选择以下恢复模型之一,以便确定如何备份数据以及数据丢失可能给您带来的风险:

    • 简单恢复模型 (SIMPLE)

  • 完全恢复模型 (FULL)

  • 大容量日志记录恢复模型 (BULK-LOGGED)

  使用简单恢复模型,您可以将数据库恢复到最近的数据库备份。使用完全恢复模型或大容量日志记录恢复模型,您可以通过使用事务日志文件备份来还原数据库,这样可以将数据库恢复到故障发生时的故障点。

  默认情况下,在 SQL Server 2000 中,SQL Server 数据库的恢复模型被设置为完全恢复模型。在完全恢复模型中,会定期备份事务日志,从而防止事务日志文件增长得过大,以致与数据库大小相比严重失衡。相比之下,如果不执行事务日志的定期备份,事务日志文件会不断增长,直至充满整个磁盘,而且您可能无法对 SQL Server 数据库执行任何数据修改操作。

  如果您不希望在灾难恢复操作过程中使用事务日志文件,则可以从完全恢复模型更改为简单恢复模型。

  • 定期备份事务日志文件,删除事务日志中非活动的事务。

  • 将事务设计为小型事务。

  • 确保没有任何未遂事务继续无限期地运行。

  • 将“更新统计”选项安排为每天运行。

  • 要对索引进行碎片整理以改善生产环境中的工作负荷性能,请使用 DBCC INDEXDEFRAG Transact-SQL 语句而不是 DBCC DBREINDEX Transact-SQL 语句。如果运行 DBCC DBREINDEX 语句,当 SQL Server 数据库处于完全恢复模式时,事务日志可能会大大扩展。此外,DBCC INDEXDEGRAG 语句不像 DBCC DBREINDEX 语句那样长时间持有锁。

  如果您必须运行 DBCC DBREINDEX 语句,因为这是一个作业,是数据库维护计划的一部分,则必须将该作业分解为多个作业。此外,在执行这些作业的间歇,还必须经常备份事务日志。

关键字:SQL Server、数据库、事务日志

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站