MSSQL数据库:提交事务后未清除日志
编辑:感谢所有提示。与此同时,问题已经自行解决。 我不知道为什么,但它现在起作用了。奇怪… 我有一个MSSQL数据库,它处于简单恢复模式下,有以下存储过程:MSSQL数据库:提交事务后未清除日志,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,编辑:感谢所有提示。与此同时,问题已经自行解决。 我不知道为什么,但它现在起作用了。奇怪… 我有一个MSSQL数据库,它处于简单恢复模式下,有以下存储过程: BEGIN TRY BEGIN TRANSACTION; exec prcDownSyncOrganisationalUnit; exec prcDownSyncOrganisationalUnitPeriod; exec prcDownSyncPerson; exec prcUpSyncPers
BEGIN TRY
BEGIN TRANSACTION;
exec prcDownSyncOrganisationalUnit;
exec prcDownSyncOrganisationalUnitPeriod;
exec prcDownSyncPerson;
exec prcUpSyncPersonLogin;
exec prcDownSyncOrganisationalUnitPerson;
exec prcDownSyncAddress;
exec prcDownSyncLocation;
exec prcDownSyncLocationAddress;
exec prcDownSyncOrganisationalUnitLocation;
exec prcDownSyncTour;
exec prcDownSyncDisplayType;
exec prcDownSyncOperator;
exec prcDownSyncList;
exec prcDownSyncListEntry;
exec prcDownSyncQuestionnaire;
exec prcDownSyncOrganisationalUnitQuestionnaire;
exec prcDownSyncQuestionnaireGroup;
exec prcDownSyncQuestionnaireGroupQuestion;
exec prcDownSyncExpressionGroup;
exec prcDownSyncExpressionGroupMember;
exec prcDownSyncExpressionAssignment;
exec prcDownSyncQuestionnaireGroupQuestionExpression;
exec prcDownSyncQuestionnaireGroupQuestionMapping;
exec prcBiSyncAppointment;
exec prcBiSyncAppointmentStatus;
exec prcDownSyncAppointmentStatusEvent;
exec prcDownSyncAppointmentAssignment;
exec prcBiSyncAppointmentQuestionnaireResult;
exec prcBiSyncAppointmentQuestionnaireResultAnswer;
exec prcBiSyncAppointmentQuestionnaireResultAnswerHistory;
--exec prcBiSyncDocument;
exec prcDownSyncAppointmentXmlValue;
exec prcDownSyncPromoter;
--exec prcRemoveDeletedData;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
EXEC prcErrorRaise;
THROW;
END CATCH
此过程每5分钟运行一次,每次执行都会强制日志增加500MB。程序成功完成后,不会清除日志。因此,一段时间后,日志非常大,会影响性能
你知道我能做什么吗?为什么日志没有被清除?我想我们需要更多信息。如果您有一个镜像生产的非生产环境,请在其上运行这些测试,但在任何情况下: 运行DBCC SQLPERF(日志空间)以查看当前日志状态 运行(在事务内部)包装器脚本中列出的每个过程。 犯罪 重新运行DBCC SQLPERF(日志空间) 在其中一次调用之后,日志文件大小是否会跳转?如果是这样的话,有一个话题要向开发者提出 这可能也有帮助:
尝试使用检查点强制截断日志。日志文件不会自动收缩。扩展日志文件是一项昂贵的操作。如果这种情况经常发生,那么文件只会再次增长,因此您不会通过缩小日志文件来帮助解决问题。但是日志文件的大小如何影响性能?@SeanLange因为每次执行日志文件都会增加500MB。一天后,磁盘已满,我认为磁盘已满会对性能产生影响(我应该在开始时提到这一点)。因此,日志中有些数据从未被清除。但在恢复模式下,这应该在事务完成后发生。一张完整的光盘绝对会影响性能。你说日志文件每隔几分钟就会增加500MB?听起来好像有什么不对劲。在简单模式下,假设您处理打开的事务,日志不应该增长那么多。您在这里谈论的是什么类型的日志?它是内置日志还是您实现的日志?如果是第二种情况,你能详细说明一下吗?谢谢你的提示。但是这个问题已经在周末自行解决了。奇怪的因此,在调用DBCC SQLPERF(logspace)之后,日志文件大小不会改变。