では、どうぞ。私はデータベースの第一人者でも管理者でもありません。実際、インデックスやクエリのチューニングをときどき行う以外は、データベースを頻繁に調べたりはしません。よくわからないものの 1 つは、SQL Server トランザクション ログです。それが何のためにあるのか、何が含まれているのか、そしてどのように機能するのか (少なくとも概念的には) は知っていますが、SQL Server がトランザクション ログにそれほど関連付けられているように見える理由がわかりません。
これが最初の質問です。間違っている場合は訂正してください。ただし、デフォルトでは、トランザクション ログには、データベース内のすべての変更の履歴全体が含まれているように思えます。これが実際に当てはまる可能性があることを示す 2 つの兆候があります。新しいデータベースを作成すると、そのログの最大サイズが「無制限の拡張」に設定されます。2 番目の理由は、私が何をしても縮小できない巨大なトランザクション ログを持つ小さなデータベースを扱ってきたことです。とても奇妙に思えますが、それが本当だとは信じられません。デフォルトで履歴全体が必要になるのはなぜですか? 私が気にするのは、一貫した状態の最新バージョンのデータだけです。まあ、場合によっては正当な理由があるのではないかと思いますが、これは追加のオプションと考えています。
2 番目の質問は、遷移ログを削除するのがなぜそれほど複雑なのかということです。それは私だけですか、それとも実際にそれを行う直接的な方法はありませんか? つい最近、私は 5MB のデータベースの 100MB 以上のログを取り除こうとしましたが、見つけた最も簡単な方法は、データベースをデタッチし、ログを削除して、再度アタッチすることでした (SQL Server でさえ少し文句を言いました)。可能なすべてのオプションを指定して縮小コマンドを試しましたが、約 50% までしか縮小できませんでした。データベースは使用されておらず (アクティブな接続はありません)、正直なところ、過去の遷移はまったく気にしませんでした。それを行う方法が他にもいくつかあることに気付きました。バックアップと復元を伴うものもあります。
私は熱心に MSDN のドキュメントを読み、トランジションについてもっと学ぼうとしましたが、約 15 分後、まるで泥の中をぐるぐる回っているように感じ、諦めました。データベース管理者や専門家にとって、私の質問はばかげているように聞こえることはわかっています。フィードバックをいただければ幸いです。
編集:最初の回答の後、私は十分に明確でない可能性があることに気付きました. トランザクション中にトランザクション ログがどのように機能するか、それが重要である理由、およびバックアップ目的で使用できることを認識しています。開発者の観点からもっと質問したかったと思います。ほとんどの場合、バックアップを必要とせず、私以外に誰も使用していない一時データベースのステージング/テストを扱っています。また、そのような状況では、データベースを転送する必要があり、膨大な移行ログを持つことは不必要な不便であることがよくあります。 .