2017-10-13 2 views
0

編集:ありがとう、すべてのヒント。その間、問題は解決しました。 なぜか分かりませんが、今は動作します。奇妙な...MSSQLデータベース:COMMIT TRANSACTIONの後にログがクリアされない

私はシンプル復旧モードにあり、このストアドプロシージャがある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分ごとに実行され、ことにより、500メガバイトの成長にログを強制的にすべての実行。プロシージャーが正常に完了すると、ログはクリアされません。だから、しばらくすると、Logは本当に本当に大きく、パフォーマンスに影響します。

私は何ができますか?ログがクリアされないのはなぜですか?

+0

しようとすると、自動的に自分自身を縮小しないチェックポイント – RegBes

+0

ログファイルにログの切り捨てを強制します。ログファイルを展開するのは高価な操作です。これが日常的に起こるようなら、ファイルは再び成長するので、ログファイルを縮小することによって何かを支援するつもりはありません。しかし、ログファイルのサイズはどのようにパフォーマンスに影響しますか? –

+0

@SeanLangeすべての実行時に、ログファイルが500MB増えているためです。 1日後、ディスクは一杯になり、ディスク全体がパフォーマンスに影響を与えると思います(私は最初にそれを述べておきました)。したがって、決してクリアされないログにはいくつかのデータがあります。しかし、回復モードでこれは、トランザクションが完了した後に起こるはずです。 – OPunktSchmidt

答えて

1

さらに詳しい情報が必要だと思います。あなたは生産がそれにこれらのテストを実行してミラー非本番環境を持っていますが、いずれにせよ場合:

実行DBCC SQLPERF(ログ・スペース)現在のログの状態を確認するために ファイル名を指定して実行(トランザクション内の)各おラッパーに記載されているPROCスクリプト。 コミット ReRun DBCC SQLPERF(ログスペース)

これらの呼び出しの1つ後にログファイルのサイズが飛びますか?もしそうなら、あなたの開発者を呼び出すトピックがあります。

また、これは助けになることがあります。 https://www.mssqltips.com/sqlservertip/1178/monitoring-sql-server-database-transaction-log-space/

+0

ヒントのためにありがとう。しかし問題は今週末に解決された。奇妙な... DBCC SQLPERF(logspace)の呼び出し後には、ログファイルのサイズは変更されません。 – OPunktSchmidt

関連する問題