本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「可用性グループでフェイルオーバーが発生した、SQL Server 2016に由来する原因の一例」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
「エラー9001」と、それに関連するエラーログを深く検証します。
まずエラー9001には、「データベース 'DB2' のログは使用できません」と表示されています。また、この直後の「エラー41653」に、「データベース 'DB2' でエラー (エラーの種類: 2 'DB_SHUTDOWN') が発生し、可用性グループ 'AG' が失敗しました」と記録されていました(図27-2)。
2017年1月時点の最新版であるSQL Server 2016では、新たに「データベースがオフラインになった場合でもフェイルオーバーするように、可用性グループを構成可能」となりました(*1)。可用性グループの設定ウィザードあるいはプロパティで「データベース レベルの正常性検出」を有効にすると、フェイルオーバーポリシーに加えて、データベースに障害が発生した場合にも自動的にフェイルオーバーさせるように設定できます(図27-3)。
今回のトラブル事例は、SQL Server 2016の新機能に由来するものと想定されます。ディスク障害の発生を原因とし、フェイルオーバーポリシーとは別のフェイルオーバーさせる条件と定義される、「データベース レベルの正常性検出」が該当したために発生したことになります。
「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
そもそも、リレーショナルデータベースとは何か?
データの登録を行うINSERT文
複数の条件を指定してSELECT文を実行する
Oracle運用の基本「ログ」を理解しようCopyright © ITmedia, Inc. All Rights Reserved.