我创建了一个作业,每天将数 GB 的数据从源数据库加载到我的目标数据库。一开始,这项工作运行良好,没有任何问题。
在过去 2 周内,由于事务日志已满,作业失败。
我在我的 SQl 作业中添加了一个步骤,以在加载开始之前清除日志,但仍然发生相同的错误。
我已经监视到在错误之前加载的最后一个表在失败之前等待了几分钟。我怀疑它正在等待清理日志。
如果我DBCC SHRINKFILE
在作业当前运行时在此数据库上运行命令,它是否也会清除/杀死活动事务?
我创建了一个作业,每天将数 GB 的数据从源数据库加载到我的目标数据库。一开始,这项工作运行良好,没有任何问题。
在过去 2 周内,由于事务日志已满,作业失败。
我在我的 SQl 作业中添加了一个步骤,以在加载开始之前清除日志,但仍然发生相同的错误。
我已经监视到在错误之前加载的最后一个表在失败之前等待了几分钟。我怀疑它正在等待清理日志。
如果我DBCC SHRINKFILE
在作业当前运行时在此数据库上运行命令,它是否也会清除/杀死活动事务?
如果我在作业当前运行时在此数据库上运行 DBCC SHRINKFILE 命令,它是否也会清除/终止活动事务
不,DBCC SHRINKFILE
不会终止交易
我在我的 SQL 作业中添加了一个步骤,以在加载开始之前清除日志。
如果您正在缩小文件,并且没有可用空间,则不会清除或缩小日志文件。您需要备份日志文件,最好根据您的RPO 和 RTO稍微频繁一些,或者在此批量插入期间将您的恢复模型交换为类似BULK LOGGED
. 更多关于如何进行 TLOG 备份。