2

インデックスなしで SP 内に作成された 3 つの一時テーブルのセットを持つ SP があります。3 つすべてが、INSERT INTO ... WITH (TABLOCK) を使用して挿入されます。データベースの復旧モデルは、userDB と tempDB で SIMPLE です。

この SP は新しいデータを生成および挿入しており、トランザクション コミット/ロールバックはデータの整合性を維持するのに十分です。そのため、TABLOCK ヒントを使用して有効にしたと思われる最小限のログを実行したいと考えています。

以下のクエリを使用して SP の実行前後のログ生成を確認していますが、TABLOCK ヒントを追加した後のログ生成に違いはありません。(テーブルは一時テーブルであるため、tempDB にチェックインします)

SELECT count(1) as NumLogEntries
            , sum("log record length") as TotalLengthWritten
FROM fn_dblog(null, null);

最小限のログ記録を有効にするために他に必要なことはありますか?

PN: このヒントを使用して管理スタジオで同じ INSERT INTO を個別に実行すると、ログの削減を確認できますが、SP 内で同じことを実行するとログが減少します。また、insert ステートメントの前にトレース フラグ 610 ON を追加しようとしましたが、効果はありませんでした。

4

0 に答える 0