SQL Serverのトランザクションログ

週末を利用してお客様のデータベースのデータ移行作業を行っておりました。
そのデータ件数たるや半端な量ではなく、約50万件のデータを3つのテーブルに書き込む作業だったので、作業時間もかかることもあり余裕を見て週末を利用したわけです。
それでもキー情報の変換ミスなどいろいろなトラブルなどもあり、何度か試行した末に予定時間を超過してようやくデータが完成したのですが、そこで問題が!!
そうです!!50万件のデータの書き込みやそれに付随する情報の検索などでトランザクションログが膨大な大きさになっていたのです!!
データベースそのものは1GB未満だったので特に問題なかったのですが、作業開始時には1GB程度だったトランザクションログが30GBを超えてしまい、お客様の環境に転送しようにも転送できない!!

どうにか圧縮させて無事転送できたので良かったのですが、メッチャ焦りました・・・(^^;;
この騒ぎでお客様では午前中システムが稼働しない状況となり、大変な迷惑をかけてしまいました。

SQL Serverのトランザクションログの圧縮方法ですが、私の備忘録として記録しておきます。

①SQL-Server Management Studioを開いてサーバに接続する。
②対象のデータベースを右クリックし、[タスク]→[バックアップ]を選択。
③バックアップの種類に「トランザクションログ」を選択し、バックアップを実行。
④対象のデータベースで任意のSQL文(SELECT句など)を実行する。
⑤再び対象のデータベースを右クリックし、[タスク]→[圧縮]→[ファイル]を選択。
⑥ファイルの種類に「ログ」を選択し、圧縮アクションに「未使用領域を解放する」を選択して圧縮を実行。
これで、トランザクションログが1MB程度に圧縮されます。
一度でうまく圧縮されない場合もありますが、その際は②~⑥を再度繰り返すと圧縮できます。

それにしても、通常は、フルバックアップを行った際にそれまでのログがクリアされてトランザクションログとして確保された領域内に空白ができ、再利用されるのである程度の容量で抑えられるのですが、今回のように大量のデータ処理を一気に行ってトランザクションログがここまで膨大に膨れ上がったのは初めての経験でした。


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント