どのように表示&別のdbを参照するプロシージャがログを増大させる

StackOverflow https://stackoverflow.com/questions/213134

  •  03-07-2019
  •  | 
  •  

質問

1台のサーバーに2つのデータベースがあります。データベースAとBを呼び出しましょう。データベースAは約11 GB、データベースBは非常に小さい(155 MB)です。データベースBには、データベースAのデータに常にアクセスして更新しているビューとプロシージャがいくつかあります。

興味深いのは、データベースBのログが急速に巨大なサイズに成長したことです。1週間以内に約12 GBに成長したと思います。データベースAはそれほど速く成長しません。

ログがそれほど大きくなる原因は何ですか?別のデータベースからデータを選択すると、ログがそのように大きくなりますか?

別のサーバー上のデータベースに対して同様の操作を行うと、データはすべて結合されて選択される前に呼び出し元のデータベースに移動されます...これにより、ログが増加し、同じことが発生する可能性があります同じサーバーですか?

SQL2000 SP4 STDエディション
完全復旧モデル

事前に感謝します、 ジョン

ところで-復旧モデルをSimpleに変更すると役立つかもしれませんが、なぜこれが最初に起こっているのか知りたいです。

役に立ちましたか?

解決

単純なSELECTステートメントがトランザクションログに何かを追加する理由を想像することはできませんが、リンクサーバーに関する経験はあまりないため、舞台裏で何が起こっているのかはわかりません。

ただし、「データベースBには、データベースAのデータに常にアクセスして更新しているビューとプロシージャがあります」と言うため、新しいアプリケーションはデータベースBに接続し、オブジェクトを使用する場合、これらの操作はBのtranログに記録されるのが妥当と思われます。

しかし、それは私の側の推測に過ぎません。トランザクションログを直接検査して、含まれている内容が妥当かどうかを確認してみませんか。 RedGateには、SQL 2000で動作する無料のログエクスプローラーがあります( http:// www .red-gate.com / products / SQL_Log_Rescue / index.htm );以前は一度しか使用しませんでしたが、うまくいくようで、その特定のインスタンスでベーコンを本当に節約しました。

詳細に興味があることは認めますが、あなたの状況では、好奇心を抑えてログファイルを処理したいと思うでしょう。結局のところ、これは一時的なものであり、ログの増加がリンクサーバーのアーティファクトである場合、新しいアプリを終了してデータベースAを廃止すると自動的に修正されるはずです。

また、Godekeはバックアップについて良い点を指摘しました。ログファイルが大きくなりすぎている場合は、より頻繁にバックアップしてください。バックアップするとログが切り捨てられますが、内部的にのみです。つまり、使用されるログファイルの割合は縮小しますが、ディスク上のファイルの実際のサイズは、DBCC SHRINKFILEを使用して変更するまで変更されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top