# SQL Server First Responder Kit 画面遷移図

## 概要

本プロジェクトはSQL Serverのストアドプロシージャ集であり、従来のGUIベースの画面遷移は存在しません。
代わりに、各ストアドプロシージャが出力する結果セットを「画面」として定義し、それらの関係性と推奨される使用フローを図示します。

## 機能別画面遷移図

```mermaid
flowchart TB
    subgraph entry["エントリーポイント"]
        START[("SQL Server 問題発生")]
    end

    subgraph realtime["リアルタイム診断"]
        BF["sp_BlitzFirst<br/>診断結果画面"]
        BF_EXPERT["sp_BlitzFirst<br/>詳細統計画面<br/>（ExpertMode）"]
        BW["sp_BlitzWho<br/>結果画面"]
    end

    subgraph health["ヘルスチェック"]
        BLITZ["sp_Blitz<br/>結果画面"]
    end

    subgraph performance["パフォーマンス分析"]
        BC["sp_BlitzCache<br/>結果画面"]
        BC_WARN["sp_BlitzCache<br/>警告説明画面"]
    end

    subgraph index["インデックス分析"]
        BI_DIAG["sp_BlitzIndex<br/>診断結果画面"]
        BI_SUM["sp_BlitzIndex<br/>サマリー画面"]
        BI_DETAIL["sp_BlitzIndex<br/>使用詳細画面"]
        BI_MISS["sp_BlitzIndex<br/>欠落インデックス画面"]
    end

    subgraph deadlock["デッドロック分析"]
        BL["sp_BlitzLock<br/>結果画面"]
    end

    subgraph history["履歴分析"]
        BA["sp_BlitzAnalysis<br/>結果画面"]
    end

    subgraph backup["バックアップ・リストア"]
        BB["sp_BlitzBackups<br/>結果画面"]
        DR["sp_DatabaseRestore<br/>実行画面"]
    end

    subgraph utility["ユーティリティ"]
        IEDB["sp_ineachdb<br/>実行画面"]
    end

    %% メインフロー
    START --> BF
    START --> BLITZ

    %% リアルタイム診断の詳細
    BF -->|"@ExpertMode=1"| BF_EXPERT
    BF_EXPERT -->|"開始時/終了時に呼出"| BW

    %% パフォーマンス分析への遷移
    BF -->|"クエリ問題検出"| BC
    BC --> BC_WARN
    BLITZ -->|"パフォーマンス問題"| BC

    %% インデックス分析への遷移
    BC -->|"インデックス問題"| BI_DIAG
    BLITZ -->|"インデックス警告"| BI_DIAG
    BI_DIAG -->|"@Mode=1"| BI_SUM
    BI_DIAG -->|"@Mode=2"| BI_DETAIL
    BI_DIAG -->|"@Mode=3"| BI_MISS

    %% デッドロック分析
    BF -->|"ブロッキング検出"| BL

    %% 履歴分析（蓄積データから）
    BF -->|"テーブル出力"| BA
    BA -.->|"過去データ参照"| BF

    %% バックアップ分析
    BLITZ -->|"バックアップ問題"| BB
    BB -->|"リストア実行"| DR

    %% ユーティリティ（独立）
    IEDB -.->|"複数DB操作"| BLITZ
```

## 典型的な使用シナリオ

### シナリオ1: 緊急パフォーマンス問題対応

```mermaid
flowchart LR
    A["問題発生"] --> B["sp_BlitzFirst"]
    B --> C["sp_BlitzWho"]
    C --> D["sp_BlitzCache"]
    D --> E["sp_BlitzIndex"]
```

### シナリオ2: 定期ヘルスチェック

```mermaid
flowchart LR
    A["定期メンテナンス"] --> B["sp_Blitz"]
    B --> C["sp_BlitzIndex"]
    B --> D["sp_BlitzBackups"]
```

### シナリオ3: パフォーマンス履歴分析

```mermaid
flowchart LR
    A["sp_BlitzFirst<br/>（スケジュール実行）"] -->|"テーブル保存"| B["出力テーブル群"]
    B --> C["sp_BlitzAnalysis"]
```

## 画面間の依存関係

| 呼び出し元 | 呼び出し先 | 関係性 |
|-----------|-----------|--------|
| sp_BlitzFirst (@ExpertMode=1) | sp_BlitzWho | 開始時・終了時に自動呼び出し |
| sp_BlitzFirst | sp_BlitzCache | @OutputTableNameBlitzCacheで結果保存 |
| sp_BlitzCache | sp_BlitzCache | @OnlySqlHandles/@OnlyQueryHashesで詳細分析 |
| sp_BlitzAnalysis | sp_BlitzFirst出力テーブル | 蓄積データの分析 |
| sp_BlitzAnalysis | sp_BlitzCache出力テーブル | 蓄積データの分析 |
| sp_BlitzAnalysis | sp_BlitzWho出力テーブル | 蓄積データの分析 |

## パラメータによる画面切替

### sp_BlitzIndex @Mode パラメータ

| @Mode | 表示画面 | 説明 |
|-------|---------|------|
| 0 | 診断結果画面 | 高優先度（1-100）のアドバイス |
| 1 | サマリー画面 | データベースごとの統計概要 |
| 2 | 使用詳細画面 | 既存インデックスの使用統計 |
| 3 | 欠落インデックス画面 | SQLサーバー提案のインデックス |
| 4 | 診断詳細画面 | 全優先度（1-255）のアドバイス |

### sp_BlitzFirst @ExpertMode パラメータ

| @ExpertMode | 追加表示 | 説明 |
|-------------|---------|------|
| 0 | なし | 標準診断結果のみ |
| 1 | sp_BlitzWho + 統計 | 実行中クエリ、Wait Stats、Perfmon、File Stats |
| 2 | 統計のみ | Wait Stats、Perfmon、File Stats（sp_BlitzWhoなし） |

### 共通 @OutputType パラメータ

| @OutputType | 出力形式 | 対応プロシージャ |
|-------------|---------|-----------------|
| TABLE | テーブル形式 | 全プロシージャ |
| MARKDOWN | マークダウン形式 | sp_Blitz |
| COUNT | 検出件数のみ | sp_Blitz |
| XML | XML形式 | sp_Blitz |
| SCHEMA | スキーマ情報 | sp_Blitz |
| NONE | 出力なし | sp_Blitz |
