MSSQL数据库:COMMIT TRANSACTION后日志未清除

时间:2017-10-13 12:30:44

标签: sql sql-server sql-server-2016

编辑:感谢所有提示。与此同时,问题已经解决了。 我不知道为什么,但它现在有效。奇怪的...

我有一个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分钟运行一次,并强制Log在每次执行时增长500MB。过程成功完成后,不会清除日志。因此,经过一段时间后,Log真的非常大并影响性能。

任何想法我能做什么?为什么没有清除日志?

1 个答案:

答案 0 :(得分:1)

我想说我们需要更多信息。如果你有一个非生产环境镜像生产运行这些测试,但无论如何:

运行DBCC SQLPERF(logspace)以查看当前日志状态 运行(在事务内)您在包装器脚本中列出的每个proc。 承诺 重新运行DBCC SQLPERF(logspace)

在其中一个调用之后,日志文件大小是否会跳转?如果是这样,那么就有一个话题可以提出你的开发人员。

这也可能有所帮助: https://www.mssqltips.com/sqlservertip/1178/monitoring-sql-server-database-transaction-log-space/