高可用Windowsシステムの研究
SQL Server 2005の高可用テクノロジ編

第3回 可用性向上のための機能と各種ツール群

3.SQL Server/データベースの構成確認

デジタルアドバンテージ
資料提供、技術協力:マイクロソフト
2007/05/30
Page1 Page2 Page3 Page4

SQL Serverの構成確認方法

 SQL Serverを管理したり、最適化したりするときに、現在のSQL Serverの設定を確認したり、場合によっては設定を変更したりする必要に迫られるときがある。こうした目的のためにSQL Server 2005では、ストアド・プロシージャやユーティリティが提供されている。

sp_configureストアド・プロシージャ
 sp_configureストアド・プロシージャを利用すれば、SQL Serverの現在の構成オプションを確認したり、変更したりできる。このsp_configureストアド・プロシージャを使えば、すべての構成オプションにアクセス可能だ。ただしこのsp_configureを使わなくても、一般的なSQL Serverの構成変更なら、Management Studioを利用できるケースも多い。またセキュリティ関連の構成変更についても、SQL Serverセキュリティ構成ツールが使える場合がある。

 なおSQL Serverの構成オプションは、基本的にはデフォルトの状態でも最適なパフォーマンスが得られるようにチューニングされている。最適化などの理由で構成を変更するときには、十分なテストを実施し、細心の注意を払わなければならない。根拠のない設定変更はトラブルのもとである。

SQLDIAG.EXEユーティリティ
 現在のユーザー情報やDLLバージョン、構成情報、データベースのサイズ情報などといったSQL Serverの現在の状態を取得するなら、SQLDIAG.EXEというコマンドライン・ユーティリティを活用する手もある。具体的にSQLDIAG.EXEでは、Windowsパフォーマンス・ログ、Windowsイベント・ログ、SQL Server Profilerトレース、ブロッキング情報、構成情報などを収集できる。

 このユーティリティは%ProgramFiles%\Microsoft SQL Server\Mssql\Binn\SQLDiag.exe(デフォルト時)にある。これを実行すると、SQL Serverに関する各種の詳細情報が、ファイルに保存される。SQL Serverの状態を記録したり、サポートを受けるためにSQL Serverの状態を報告したりする際に使えるだろう。

 また、定期的に情報を取得する必要があるなら、SQLDIAG.EXEをサービスとして起動する方法もある。

データベース構成の確認方法

 特定のデータベースに関する構成を確認したり、設定をデフォルト構成から変更したければ、sp_helpdb、sp_dboptionストアド・プロシージャが利用できる。これらのストアド・プロシージャにデータベース名をオプションとして与えて実行すれば、目的とするデータベースの情報を収集、設定できる。

 sp_helpdbを実行すれば、データベースの作成日やデータベースの合計サイズ、完全なファイル名パス、最大ファイル・サイズ、データベースの所有者などといった情報を確認できる。またsp_dboptionでは、データベースを読み取り専用モードに変更したり、同時アクセス・ユーザーを1人に制限したり、ログなし処理を許可したりできる(ログなし処理の許可は、データの一括インポート/エクスポート時などに活用する)。

データベースの現在の状況を確認する

 SQL Server 2005には、データベースの現在の活動状況を確認するためのストアド・プロシージャがいくつか用意されている。管理ツールのManagement Studioで実行することで、SQL Serverの現在の状態を診断することが可能である。

現在のユーザー/プロセスに関する情報の取得
 現在実行中のユーザーやプロセスに関する情報を取得するには、sp_whoストアド・プロシージャを実行する。以下は、Management Studioでsp_whoストアド・プロシージャを実行した例である。

sp_whoの実行例
sp_whoを実行すると、現在のユーザーのプロセスに関する情報を確認できる。アクティブなユーザーや、システム・プロセスIDで情報をフィルタすることもできる。
  システム・プロセスID。51以上の数値が付いているものがユーザー・プロセス。
  ブロッキング情報。ブロック中のプロセスの状態を確認できる。

 画面から分かるとおり、システム・プロセスID(SPID:System Process ID)やアクティブなユーザーなどでプロセスをフィルタして表示できる。またブロック中のプロセスの有無、プロセスの状態なども確認できる。

 sp_whoの構成オプションの設定については、以下のWebページが詳しい。

ロック情報の取得
 現在アクティブなロック・マネージャのリソースに関する情報(ロック情報)を取得するには、sys.dm_tran_locksストアド・プロシージャを実行する。これによりセッションのリソース・グループや要求グループ、ロック・ホルダー(ロックを実行しているセッション)や、ロックの解放待ちのセッションなどを確認できる。

sys.dm_tran_locksの実行例
現在アクティブなロック・マネージャのリソースに関する情報を取得できる。

実行中のプロセス情報の取得
 現在実行されているプロセスの情報を取得するには、sys.dm_exec_connections、sys.dm_exec_sessions、sys.dm_exec_requestsストアド・プロシージャを実行する。それぞれ、プロセスの接続情報(sys.dm_exec_connections)、認証済みセッションの情報(sys.dm_exec_sessions)、要求に関する情報(sys.dm_exec_requests)を取得できる。以下は、sys.dm_exec_connectionsプロシージャを実行したところである。

sys.dm_exec_connectionsの実行例
このsys.dm_exec_connectionsプロシージャでは、現在実行しているプロセスに関する各種接続情報を確認できる。

プロファイラとパフォーマンス・モニタ

 データベースのチューニングやトラブル対策では、実行されたクエリをキャプチャし、クエリの内容を分析したい場合がある。これにはSQL Server 2005付属のSQL Server Profilerを利用できる。SQL Server Profilerでは、キャプチャしたいクエリを指定して、対象となるクエリだけを確認可能だ。

SQL Server Profilerの実行例
実行されているクエリをキャプチャし、クエリの内容を確認できる。

 サーバ全体のパフォーマンスについては、Windows標準のパフォーマンス・モニタが使える。SQL Server 2005をインストールすると、SQL Serverに関連する項目が追加され、SQL Serverのパフォーマンス監視ができるようになる。

パフォーマンス・モニタの実行例
SQL Server 2005をインストールすると、SQL Server関連の項目が追加され、パフォーマンス・モニタを利用してSQL Serverのパフォーマンス監視ができるようになる。

データベースの整合性確認と修復:DBCC CHECKDBコマンド

 「DBCC CHECKDB」は、データベース内のオブジェクトの論理的および物理的な整合性をチェックするためのコマンドである。具体的には、インデックスとデータ・ページが正しくリンクしていること、インデックスが適切な順序で並んでいること、ポインタに一貫性があること、各ページ上のデータが適切であること、ページ・オフセットが適切であること、などを検査できる。バックアップの直前、リストアの直後には念のため実行しておくとよい。

 何もオプションを指定しなければ、整合性の検査のみが行われるが、必要なら修復オプションを追加できる。修復オプションを追加すると、エラーが検出された際に一貫性の修復が実行される。修復オプションには、次の3つがある。

REPAIR_FAST
 非クラスタ化インデックスの追加キーの修復など、時間のかからない軽度の修復を実行する。これらの修復は迅速に実行でき、データが失われるリスクはない。

REPAIR_REBUILD
 前出のREPAIR_FASTが行うすべての修復に加え、インデックスの再構築など、時間のかかる修復を実行する。REPAIR_REBUILDオプションについても、データ損失のリスクはない。

REPAIR_ALLOW_DATA_LOSS
 前出のREPAIR_REBUILDのすべての修復に加え、割り当てエラーの修復、構造的な行エラーやページ・エラーの修復(行とページの割り当ておよび割り当ての解除)、壊れたテキスト・オブジェクトの削除を実行する。このREPAIR_ALLOW_DATA_LOSSオプションでは、修復によりデータ損失が発生する場合がある。ただし、ユーザー・トランザクションを利用して修復を実行できるので、ユーザーが後から必要に応じて変更をロールバックできる。ただし修復をロールバックしたときは、データベースにエラーが残っているので、データベースをバックアップから復元する必要がある。なお、あるエラーの修復レベルが原因で、エラーの修復がスキップされた場合は、その修復に依存するすべての修復もスキップされる。修復が完了したら、データベースをバックアップする。

 ただしDBCC CHECKDBコマンドの実行には次のようないくつかの注意点がある。

  • 修復時はシングル・ユーザー・モードでなければならない。
  • スキーマ・ロックを保持するため、DDL(Data Definition Language)は発行不可。
  • プロセッサ、ディスクに大きな負担がかかる。
  • 作業領域としてtempdbを使用する。
  • 実行中、ログの切り捨ては行われない。

高可用システムを構築するための数々の機能を備えたSQL Server 2005

 以上、3回にわたり、エンタープライズ・システムに求められる可用性の要件や、そうした高可用性を備えたデータベース・システムを構築するために、SQL Server 2005が備える数々の機能などを説明してきた。第1世代であるSQL Server 6.0/6.5から、第2世代にあたるSQL Server 7.0/SQL Server 2000に続き開発されたSQL Server 2005は、SQL Serverの第3世代製品となる。この過程でさまざまな機能拡張がなされてきたが、重要なポイントは明らかに大規模システムでの利用に耐える能力の向上である。

 クラスタリングやデータベース・ミラーリング、ログ配布を必要に応じて採用したり、場合によっては複数の高可用技術を組み合わせたりすることで、より高い可用性を備えたミッション・クリティカル用途のデータベース・システムを構築できる。SQL Serverというと、当初は小規模が中心のPC向けデータベース・システムとしての印象が強く、エンタープライズ向けとしては、候補にすら挙がらなかったが、最新版であるSQL Server 2005は、エンタープライズ用途でも十分実用に耐える高可用機能を備えていることがお分かりいただけただろう。

 聞くところによれば、実際のところエンタープライズ・システムの導入案件でも、SQL Server 2005を採用するケースが増えているという。今後進むと思われる、Windows OSや.NETテクノロジのエンタープライズ領域への浸透に従って、SQL Server 2005が採用されるケースはますます増えていくに違いない。End of Article

 

 INDEX
  [高可用Windowsシステムの研究]
  第3回 可用性向上のための機能と各種ツール群
      1.可用性向上のための機能
      2.可用性向上を支援するツール群
    3.SQL Server/データベースの構成確認
 
 [高可用Windowsシステムの研究]


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間