こんにちは、私の名前はカートです。GSEチームに所属するシニア プリンシパル エンジニアです。
このビデオでは、Microsoft SQL Serverデータベースのトランザクション ログ ファイルを縮小する方法を説明します。トランザクション ログを圧縮するさまざまな方法と、ログの圧縮操作が期待どおりに実行されなかった場合の対処方法を確認します。
ログ ファイルを縮小する方法はいくつかあります。SQL Server Management Studioに入ります。データベースのプロパティに移動し、そこで縮小操作を実行します。まず、そのデモを行います。
次に、TSQL ShrinkFile コマンドを実行する操作もあります。このビデオで説明したいもう1つの点は、ファイルの縮小操作が期待どおりに実行されなかった場合に何が起こるかです。その場合のオプションについて説明します。それでは、Studio Managementに入りましょう。
ここでは 'AdventureWorks2017' データベースを使用し、データベース メニューの [タスク] に移動して [縮小] を選択すると、2 つの異なるオプションがあります。
データベース レベルで、データベース内のすべてのファイルを処理したり、特定のファイルを処理したりできますが、この場合、特定のファイルを使用する必要があります。デフォルトでは、ここのパレットを見ると、[File type]の下に[Data]が表示されています。
データベース ファイルに対しては何も行わず、代わりにトランザクション ログを縮小するため、トランザクション ログは文字通り [ファイルの種類] の下の [ログ] になります。これで、データベースに関する情報が得られました。
データベース ログはかなり小さく、これは新しいデータベースです。そのトランザクション ログに割り当てられているサイズと空き領域が表示されます。空き領域がないとデータベースでファイルの圧縮操作を実行できないため、空き領域が重要になる場合があります。
複数のオプションがあります。ここでは詳しく説明しませんが、基本的にトランザクション ログを切り捨てる未使用領域を解放するオプションがあります。[OK]をクリックしてこれを実行すると、先に進み、圧縮を実行するか、そのデータベースで縮小を試みます。その代わりに、データベースを縮小するためのTSQLオプションを見ていきます。
今日は少し怠惰なので、先に進んで、トランザクションをプルする「クリップボードへのスクリプトアクション」まで来ます。ここで[OK]をクリックした場合に実行されていたTSQLコマンドです。
先に進んで [キャンセル] をクリックし、AdventureWorks2017 データベースで圧縮を実行するための TSQL コマンドを貼り付けます。コマンドをもう一度確認するには、ファイルの縮小コマンドです。ここでは AdventureWorks2017 ログを扱っており、そのログのサイズを指定できます。
この場合、デフォルトのゼロのままにします。ここで何も定義しないか、値をゼロのままにすると、ファイルを元のファイルサイズに縮小しようとします。「truncateonly」オプションがあり、トランザクション ログ内の空き領域を解放してOSに戻します。
これを実行すると、実行内容と現在のサイズのレポートが作成されます。それで、先に進んで、それを約1メガに減らしましたが、これは私たちにとって素晴らしいことです。大量のディスク領域が解放されました。また、このビデオで説明したいことの1つは、ファイルの縮小を実行して正常に実行されなかった場合に何が起こるかです。
ファイルの圧縮操作が失敗する最大の理由は、ファイルの圧縮コマンドを実行するのに十分な空き領域がデータベース内にないことです。最初に行うことは、ファイル内の空き領域の量を把握することです。
ここでは、GUI メニューでこの特定のコマンドを実行することもできますが、ここでは焦点を変更し、代わりに AdventureWorks2019 データベースを使用しています。この特定のコマンドであるselectコマンドを実行すると、そのデータベースに表示される空き領域の量が表示されます。
現在、データベース内に3メガの空き領域が表示されています。特定のデータベース内の空き領域が不足した場合にデータベースを削減するために使用できる2つの異なるオプションがあります。adventure Works 2019データベースのオプション(リカバリー オプション)を変更できます。
リカバリ オプションを 'simple' に変更し、dbcc shrink file コマンドを実行すると、ファイルは元のサイズよりもはるかに小さいサイズに縮小されます。データベースをシンプルモードにすると、トランザクションログはアクティブなトランザクションを処理し、アクティブでないものはすべてログからフラッシュされます。
この特定のコマンドを実行できます。ほとんどの本番データベースはフル リカバリー中であるため、シンプルに移行することで、ファイルの縮小コマンドを正常に実行できるか、少なくとも実行できます。シンプル モードになっていますが、シナリオでは、これを正常に実行できませんでした。
シンプルモードに移行した後、ファイルの同期縮小操作が正常に実行され、新しいファイルサイズに関する情報が表示され、その特定のケースで最後に行うことは、完全なリカバリモードに戻すことです。
この時点で、shrink fileコマンドを使用して管理不能なトランザクション ログ ファイルを取得し、実際にそのファイルを縮小できる状態にし、最新のトランザクション情報を確実に取得するためにバックアップできるモードに戻します。
これで、Microsoft SQL Serverデータベースのトランザクション ログを縮小する方法のデモを終了します。
ご視聴ありがとうございました。