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

编辑:感谢所有提示。与此同时,问题已经自行解决。 我不知道为什么,但它现在起作用了。奇怪…

我有一个MSSQL数据库,它处于简单恢复模式下,有以下存储过程:

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)之后,日志文件大小不会改变。