日志截断在日志文件中释放空间,以便事务日志重用。由于无法通过收缩来截断或删除日志的活动部分,因此当日志记录长时间保持活动状态时,截断可能会延迟。
日志记录可以在本主题中描述的各种情况下保持活动状态。您可以通过使用日志使用等待和日志使用等待的列系统数据库目录视图。
下表简要介绍了日志使用等待和日志使用等待的列系统数据库目录视图。
0 |
没有什么 |
当前有一个或多个可重用的虚拟日志文件。 |
1 |
检查点 |
自上次日志截断以来,没有发生任何检查点,或者日志头尚未移动到虚拟日志文件之外(所有恢复模型)。
这是延迟日志截断的常规原因。有关更多信息,请参阅检查点和日志的活动部分. |
2 |
日志备份 |
需要进行日志备份才能向前移动日志头(仅限于完整或大容量恢复模式)。
注释
日志备份不会阻止截断。
当日志备份完成时,日志的头部会向前移动,一些日志空间可能会变得可重用。 |
三 |
活动_备份_恢复 |
正在进行数据备份或还原(所有恢复模式)。
数据备份的工作方式与活动事务类似,并且在运行时,备份可以防止截断。有关详细信息,请参阅本主题后面的“数据备份操作和还原操作”。 |
4 |
激活_事务 |
事务处于活动状态(所有恢复模型)。
|
5 |
数据库_内部 |
数据库镜像已暂停,或者在高性能模式下,镜像数据库明显落后于主体数据库(仅限完全恢复模式)。
有关详细信息,请参阅本主题后面的“数据库镜像和事务日志”。 |
6 |
复制 |
在事务复制期间,与发布相关的事务仍无法传递到分发数据库(仅限完整恢复模型)。
有关详细信息,请参阅本主题后面的“事务复制和事务日志”。 |
7 |
数据库_快照_创建 |
正在创建数据库快照(所有恢复模型)。
这是日志截断延迟的常规原因,通常很简单。 |
8 |
日志扫描 |
正在进行日志扫描(所有恢复模型)。
这是日志截断延迟的常规原因,通常很简单。 |
9 |
其他_传输 |
当前未使用此值。 |
数据备份操作和恢复操作
在任何备份或还原操作期间都不会发生日志截断。在SQL Server 2005及更高版本中,可以在数据备份期间进行日志备份。但是,在此类日志备份期间不会发生日志截断,因为所有事务日志必须对数据备份操作保持可用。如果数据备份正在阻止日志截断,那么取消备份可能有助于解决眼前的问题。
有关日志截断的更多信息,请参阅事务日志截断.
长时间运行的活动事务
活动事务要求日志在包含事务开始的日志记录中保持活动状态。例如,如果事务的开始和结束由用户控制,则长时间运行事务的典型原因是用户启动事务,然后在事务等待用户响应时离开。在这些情况下,尽管等待事务本身生成的日志很少,但事务会阻止日志截断并导致日志变大。
注释
有关如何避免长时间运行事务的信息,请参阅编码高效事务.
数据库镜像和事务日志
数据库镜像要求每个日志记录保持活动状态,直到主体服务器实例收到来自镜像服务器实例的通知,表明该记录已写入镜像服务器上的磁盘。如果镜像服务器实例落后于主体服务器实例,则活动日志空间量会相应增加。在这种情况下,您可能需要停止数据库镜像,进行截断日志的日志备份,将该日志备份应用于镜像数据库(使用WITH NORECOVERY),然后重新启动镜像。
重要
此外,在开始镜像之前,如果在所需的日志备份之后进行了任何其他日志备份,则还必须手动应用每个其他日志备份(始终使用WITH NORECOVERY)。应用最新的日志备份后,可以开始镜像。
有关更多信息,请参阅删除数据库镜像和设置数据库镜像.
事务复制和事务日志
合并复制和快照复制不会影响事务日志大小,但事务复制可以。如果数据库包含一个或多个事务发布,则在与发布相关的所有事务都已交付到分发数据库之前,不会截断日志。如果事务日志增长过大,并且日志读取器代理按计划运行,请考虑缩短运行间隔或将其设置为连续模式运行。如果设置为以连续模式运行(默认),请确保它正在运行。有关如何检查日志读取器代理状态的更多信息,请参阅如何:查看与发布关联的代理的信息并执行任务(复制监视器).
此外,如果在发布数据库或分发数据库上设置了“同步备份”选项,则在备份所有事务之前,事务日志不会被截断。如果事务日志增长过大,并且您设置了此选项,请考虑缩短事务日志备份之间的间隔。有关如何备份和恢复事务复制中涉及的数据库的更多信息,请参阅备份和恢复快照和事务复制的策略.
管理复制
监视复制