使用dump transaction with no_log的危险性说明

时间:2021-10-14 02:02:54

但是“最后一招”究竟是什么意思呢?当你使用这条命令时会怎样呢?那你应使用哪条命令来代替它呢?最后,若这条命令如此有问题,为什么Sybase却要提供它呢?

Sybase技术支持建议你定期的dump你的transaction log。你必须根据你的数据库中记入日记的活动的量的大小以及你的数据库的大小来决定dump的方式。有些地方按月dump transaction;有些地方每夜dump transaction。

  注意:若你正运行SQL Server10.0,你可以用sp_thresholdaction在空间紧缺之前来自动dump tran;另外,此时Backup Server会保证在dump进行时,任务不会被挂起。请在你的SQL Server参考手册中获取更详细的信息。这篇文章的剩余部分将适用于运行系统10以前版本SQL Server的领域。

  若你从未dump transaction过,transactionlog将最终会满。 SQLServer使用log(日志)是出于恢复目的的。 当log满时,服务器将停止事物的继续进行,因为服务器将不能将这些事物写进日志,而服务器不能运行大多数的dump tran命令,因为SQL Server也需在日志中记录这些命令。

  这就是为什么当其它dump tran命令不能执行时no_log可执行的原因。但是想一下dump transaction with no_log被设计执行的环境。所有对不做并发性检查。

  若你在对数据库的修改发生时使用dump transaction with no_log,你就会冒整个数据库崩溃的风险。在多数情况下,它们被反映成813或605错误。为了在数据库被修改时,删除transaction log中的不活跃部分可使用dump transaction with trancate_only。这条命令写进transaction log时,并且它还做不要的并发性检查。这两条命令都有与其相关的警告,在命令参考手册中会看到这些警告。请确保在使用其中任一条命令以前,你已理解这些警告和指示。 Syase提供dump transaction with no_log来处理某些非常紧迫的情况。为了尽量确保你的数据库的一致性,你应将其作为“最后一招”。