バックアップ処理でタイムアウトが発生した(処理遅延トラブル):SQL Serverトラブルシューティング(64)(1/2 ページ)
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。今回は「バックアップ処理でタイムアウトが発生した」場合の解決方法を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
トラブル 53(カテゴリー:処理遅延トラブル):バックアップ処理でタイムアウトが発生した
「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します(本トラブルシューティングの対応バージョン:SQL Server 全バージョン)。
トラブルの原因を探る
記録されていた「エラー3041」には、「BACKUPで、コマンドBACKUP DATABASE DBを完了できませんでした。詳細メッセージについては、バックアップアプリケーションログを確認してください」とあります。バックアップを実行していたアプリケーションのメッセージを確認したところ「タイムアウトが発生しました」と記録されていました。
データベース自体のサイズはほとんど変わっていないため、バックアップ対象が増えたことによるタイムアウトではなさそうです。同時に実行している処理がないため、負荷による処置遅延でもなさそうです。
データベースをバックアップする際には内部的にチェックポイント(*1)が実行され、メモリ上で修正されたデータをディスクに書き込む必要があります。既定ではチェックポイントの動作はエラーログには記録されませんが、トレースフラグの3502、3504、3605を有効にすることで、動作を確認できます(関連記事)。
これらのトレースフラグを次のクエリを使って有効にした状態でバックアップを実行し、エラーログを確認してみます(図2)。
DBCC TRACEON (3502, 3504, 3605, -1);
バックアップコマンドが失敗する直前にチェックポイントのログが出力されていたことが確認できました。
メモリ上の修正されたページが少ない場合は、短時間で終了しますが、修正されたページが多数存在する場合は、チェックポイントの実行にも時間を要します。
バックアップコマンドを実行した際のクエリタイムアウトの時間にはチェックポイントの実行時間も含まれるため、「Ckpt dbid XX started」(XXは整数)から「Ckpt dbid XX complete」までに時間を要している場合は、バックアップの処理においてタイムアウトが発生する場合があります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】 - データの登録を行うINSERT文
- 複数の条件を指定してSELECT文を実行する
前回は、SELECT文の初歩の初歩を解説しました。今回は、複数の条件を指定して、目的のデータを取り出す方法を解説します(編集部) - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。