# SQL Server First Responder Kit 業務運用マニュアル

## 目次

**【基本操作】**
1. [システム概要](#1-システム概要)
2. [接続・終了手順](#2-接続終了手順)
3. [基本的な使い方](#3-基本的な使い方)

**【業務フローに沿った機能】**
4. [【STEP1】定期ヘルスチェック（問題の早期発見）](#4-step1定期ヘルスチェック問題の早期発見)
5. [【STEP2-3】リアルタイム診断（現在の問題把握）](#5-step2-3リアルタイム診断現在の問題把握)
6. [【STEP3-4】詳細分析（原因の特定）](#6-step3-4詳細分析原因の特定)
7. [【STEP4-5】対処・最適化（問題の解決）](#7-step4-5対処最適化問題の解決)

**【サポート機能】**
8. [バックアップ分析機能](#8-バックアップ分析機能)
9. [データベースリストア機能](#9-データベースリストア機能)
10. [ユーティリティ機能](#10-ユーティリティ機能)

**【運用ガイド】**
11. [日常業務の流れ](#11-日常業務の流れ)
12. [よくある質問と対処法](#12-よくある質問と対処法)
13. [トラブルシューティング](#13-トラブルシューティング)

---

## 1. システム概要

### 1.1 SQL Server First Responder Kitとは

SQL Server First Responder Kitは、Microsoft SQL Serverの診断・パフォーマンスチューニング・健全性チェックを行うためのオープンソースのストアドプロシージャ集です。DBA（データベース管理者）、システム管理者、開発者がSQL Serverの問題を迅速に特定し、解決するためのツールを提供します。

### 1.2 本システムで行う主要業務

本システムは、主に以下の業務を支援します：

| 業務カテゴリ | 具体的な業務内容 |
|------------|----------------|
| **定期ヘルスチェック** | サーバー全体の健全性診断、セキュリティ設定確認、バックアップ状況確認 |
| **パフォーマンス診断** | リアルタイム問題診断、リソース消費クエリの特定、待機統計分析 |
| **インデックス管理** | インデックス使用状況分析、欠落インデックス提案、不要インデックス特定 |
| **障害対応** | デッドロック分析、実行中クエリ監視、問題クエリの特定 |
| **バックアップ・リストア** | バックアップ履歴分析、RPO/RTO推定、データベースリストア |

### 1.3 業務フロー概要

本システムにおける業務は、以下の流れで進行します：

```
+--------------------------------------------------------------------+
|                        業務フロー                                    |
+--------------------------------------------------------------------+
|                                                                     |
|  【STEP 1】定期ヘルスチェックで問題を早期発見（sp_Blitz）             |
|      |                                                              |
|      v                                                              |
|  【STEP 2】リアルタイム診断で現在の状況を把握（sp_BlitzFirst）        |
|      |                                                              |
|      v                                                              |
|  【STEP 3】詳細分析で問題の原因を特定                                |
|      |     - クエリ分析（sp_BlitzCache）                            |
|      |     - インデックス分析（sp_BlitzIndex）                       |
|      |     - デッドロック分析（sp_BlitzLock）                        |
|      v                                                              |
|  【STEP 4】原因に基づいた対処・最適化を実施                          |
|      |                                                              |
|      v                                                              |
|  【STEP 5】改善結果を確認し、継続的な監視を実施                       |
|                                                                     |
+--------------------------------------------------------------------+
```

**役割別の業務概要：**

| 役割 | 主な業務 |
|------|---------|
| **DBA（データベース管理者）** | 定期ヘルスチェック、パフォーマンス監視、インデックス管理、障害対応、バックアップ分析 |
| **システム管理者** | サーバー健全性確認、セキュリティ設定確認、容量監視 |
| **開発者** | クエリパフォーマンス分析、インデックス設計確認、問題クエリの特定 |

### 1.4 主な機能

| 機能 | 説明 | 業務フローでの位置 |
|------|------|------------------|
| sp_Blitz | サーバー全体のヘルスチェック、優先度付き問題リスト出力 | STEP 1 |
| sp_BlitzFirst | リアルタイムパフォーマンス診断 | STEP 2 |
| sp_BlitzWho | 現在実行中のクエリ監視 | STEP 2-3 |
| sp_BlitzCache | 最もリソースを消費するクエリの分析 | STEP 3 |
| sp_BlitzIndex | インデックス設計とパフォーマンス分析 | STEP 3-4 |
| sp_BlitzLock | デッドロック情報の解析 | STEP 3 |
| sp_BlitzAnalysis | 過去のパフォーマンスデータの分析 | STEP 3-4 |
| sp_BlitzBackups | バックアップ履歴分析、RPO/RTO推定 | 随時利用 |
| sp_DatabaseRestore | データベースリストア実行 | 随時利用 |
| sp_ineachdb | 複数データベースへのコマンド実行 | 随時利用 |

### 1.5 ユーザー種別

システムには以下のユーザー種別があります：

| ユーザー種別 | 説明 |
|-------------|------|
| sysadmin | 全機能を使用可能。全てのチェック項目が実行される |
| VIEW SERVER STATE権限保有者 | 基本的な診断機能を使用可能。一部のチェックはスキップされる |
| VIEW DATABASE STATE権限保有者 | 特定データベースのインデックス分析等が可能 |

### 1.6 対応環境

**対応SQL Serverバージョン：**
- SQL Server 2008以降（Microsoftがサポートするすべてのバージョン）
- SQL Server on Windows
- SQL Server on Linux
- Amazon RDS SQL Server
- Azure SQL Database（一部機能制限あり）

**推奨クライアントツール：**
- SQL Server Management Studio（SSMS）（最新版）
- Azure Data Studio（最新版）

---

## 2. 接続・終了手順

### 2.1 接続方法

1. SQL Server Management Studio（SSMS）またはAzure Data Studioを起動します
2. 「接続」ダイアログが表示されます

**入力項目：**

| 項目 | 入力内容 |
|------|---------|
| サーバー名 | SQL Serverインスタンス名（例: localhost\SQLEXPRESS） |
| 認証 | Windows認証またはSQL Server認証 |
| ログイン | SQL Server認証の場合、ユーザー名を入力 |
| パスワード | SQL Server認証の場合、パスワードを入力 |

3. 「接続」ボタンをクリックします
4. 接続に成功すると、オブジェクトエクスプローラーにサーバーが表示されます

### 2.2 First Responder Kitのインストール確認

1. オブジェクトエクスプローラーで「データベース」→「master」→「プログラミング」→「ストアドプロシージャ」を展開します
2. 「dbo.sp_Blitz」「dbo.sp_BlitzCache」などのプロシージャが存在することを確認します

**インストールされていない場合：**

```sql
-- masterデータベースにインストール（推奨）
USE master;
GO
-- Install-All-Scripts.sql の内容を実行
```

### 2.3 接続終了方法

1. SSMSまたはAzure Data Studioを閉じます
2. または、オブジェクトエクスプローラーでサーバーを右クリックし「切断」を選択します

---

## 3. 基本的な使い方

### 3.1 ストアドプロシージャの実行方法

First Responder Kitの各機能は、ストアドプロシージャとして実行します。

1. SSMSで「新しいクエリ」をクリックし、クエリウィンドウを開きます
2. 以下のようにストアドプロシージャを実行します

```sql
-- 基本的な実行方法
EXEC sp_Blitz;

-- パラメータを指定して実行
EXEC sp_Blitz @CheckUserDatabaseObjects = 1;
```

3. 「実行」ボタン（F5キー）をクリックします
4. 結果が結果グリッドに表示されます

### 3.2 ヘルプの表示

各ストアドプロシージャのヘルプを表示するには、`@Help = 1`パラメータを指定します。

```sql
-- sp_Blitzのヘルプを表示
EXEC sp_Blitz @Help = 1;

-- sp_BlitzCacheのヘルプを表示
EXEC sp_BlitzCache @Help = 1;
```

### 3.3 結果の見方

各ストアドプロシージャの結果には、以下の共通項目が含まれます：

| 列名 | 説明 |
|------|------|
| Priority | 問題の優先度（1が最も緊急、値が大きいほど優先度低） |
| FindingsGroup | 問題のカテゴリ（Security, Performance, Reliability等） |
| Finding | 問題の名称 |
| DatabaseName | 関連するデータベース名 |
| URL | 問題の詳細情報へのリンク |
| Details | 問題の詳細説明 |

**優先度レベルの意味：**

| Priority | 意味 | 対応の緊急度 |
|----------|------|-------------|
| 0 | 情報のみ | 対応不要 |
| 1 | 緊急 | 即座に対応が必要 |
| 10-50 | 高優先度 | 早期に対応すべき |
| 50-100 | 中優先度 | 計画的に対応 |
| 100以上 | 低優先度 | 時間があれば対応 |

---

## 4. 【STEP1】定期ヘルスチェック（問題の早期発見）

> **業務フローでの位置**: サーバー全体の健康状態を定期的にチェックし、潜在的な問題を早期に発見するステップです。

### 4.1 sp_Blitzによるヘルスチェック

sp_Blitzは、SQL Serverインスタンス全体の健全性を包括的に診断します。

**基本的な実行方法：**

```sql
-- 基本実行
EXEC sp_Blitz;

-- サーバー情報も含めて実行
EXEC sp_Blitz @CheckServerInfo = 1;

-- ユーザーデータベースオブジェクトのチェックも実行
EXEC sp_Blitz @CheckUserDatabaseObjects = 1, @CheckServerInfo = 1;
```

**主要なパラメータ：**

| パラメータ | 説明 | デフォルト |
|-----------|------|-----------|
| @CheckUserDatabaseObjects | ユーザーDB内のオブジェクトをチェック | 1 |
| @CheckServerInfo | サーバー情報を表示 | 0 |
| @IgnorePrioritiesBelow | 指定値未満の優先度をスキップ | NULL |
| @IgnorePrioritiesAbove | 指定値超過の優先度をスキップ | NULL |
| @OutputType | 出力形式（TABLE/MARKDOWN/COUNT） | TABLE |

**実行結果の例：**

```
Priority | FindingsGroup      | Finding                    | Details
---------|-------------------|----------------------------|------------------
1        | Security          | Server Authentication Mode | Mixed mode enabled
10       | Reliability       | No Backups                 | Database: TestDB
20       | Performance       | High VLF Count             | Log file has 500 VLFs
```

### 4.2 結果をテーブルに保存する

定期的なヘルスチェック結果を履歴として保存できます。

```sql
-- 結果をテーブルに出力
EXEC sp_Blitz
    @OutputDatabaseName = 'DBATools',
    @OutputSchemaName = 'dbo',
    @OutputTableName = 'BlitzResults';
```

### 4.3 推奨実行頻度

| チェック種類 | 推奨頻度 | パラメータ設定 |
|-------------|---------|---------------|
| 基本ヘルスチェック | 日次 | @CheckUserDatabaseObjects = 0 |
| 詳細ヘルスチェック | 週次 | @CheckUserDatabaseObjects = 1, @CheckServerInfo = 1 |
| 緊急問題のみ | 随時 | @IgnorePrioritiesAbove = 50 |

---

## 5. 【STEP2-3】リアルタイム診断（現在の問題把握）

> **業務フローでの位置**: パフォーマンス問題が発生した際に、「今この瞬間」何が起きているかを素早く把握するステップです。

### 5.1 sp_BlitzFirstによるリアルタイム診断

sp_BlitzFirstは、現在のパフォーマンス状態を即座に診断します。

**基本的な実行方法：**

```sql
-- 基本実行（5秒間のサンプリング）
EXEC sp_BlitzFirst;

-- 10秒間のサンプリング
EXEC sp_BlitzFirst @Seconds = 10;

-- 詳細モードで実行
EXEC sp_BlitzFirst @ExpertMode = 1;
```

**主要なパラメータ：**

| パラメータ | 説明 | デフォルト |
|-----------|------|-----------|
| @Seconds | サンプリング秒数 | 5 |
| @ExpertMode | 詳細モード（Wait Stats, Perfmon等も表示） | 0 |
| @ShowSleepingSPIDs | スリープ中のセッションも表示 | 0 |
| @SinceStartup | 起動時からの統計を使用 | 0 |

**ExpertModeの追加出力：**

@ExpertMode = 1を指定すると、以下の追加情報が表示されます：

- Wait Stats（待機統計）
- Perfmon Counters（パフォーマンスカウンター）
- File Stats（ファイル統計）
- 実行中クエリ情報（sp_BlitzWho呼び出し）

### 5.2 sp_BlitzWhoによる実行中クエリ監視

sp_BlitzWhoは、現在実行中のクエリを詳細に表示します。

```sql
-- 基本実行
EXEC sp_BlitzWho;

-- スリープ中のセッションも表示
EXEC sp_BlitzWho @ShowSleepingSPIDs = 1;

-- 詳細モードで実行
EXEC sp_BlitzWho @ExpertMode = 1;
```

**表示される情報：**

| 列名 | 説明 |
|------|------|
| session_id | セッションID |
| status | 実行状態 |
| wait_info | 待機情報 |
| query_text | 実行中のクエリ |
| query_plan | 実行プラン |
| memory_grant | メモリ付与サイズ |
| tempdb_allocations | tempdb使用量 |

### 5.3 定期的なモニタリングの設定

sp_BlitzFirstの結果をテーブルに保存して、継続的なモニタリングを行います。

```sql
-- 結果をテーブルに出力（定期実行用）
EXEC sp_BlitzFirst
    @OutputDatabaseName = 'DBATools',
    @OutputSchemaName = 'dbo',
    @OutputTableName = 'BlitzFirst',
    @OutputTableNameWaitStats = 'BlitzFirst_WaitStats',
    @OutputTableNameFileStats = 'BlitzFirst_FileStats',
    @OutputTableNamePerfmonStats = 'BlitzFirst_PerfmonStats';
```

---

## 6. 【STEP3-4】詳細分析（原因の特定）

> **業務フローでの位置**: リアルタイム診断で問題を把握した後、クエリ、インデックス、デッドロック等の詳細分析を行い、原因を特定するステップです。

### 6.1 sp_BlitzCacheによるクエリパフォーマンス分析

sp_BlitzCacheは、プランキャッシュから最もリソースを消費しているクエリを分析します。

**基本的な実行方法：**

```sql
-- 基本実行（CPU順でTop 10）
EXEC sp_BlitzCache;

-- 読み取り数順でソート
EXEC sp_BlitzCache @SortOrder = 'reads';

-- 実行時間順でソート
EXEC sp_BlitzCache @SortOrder = 'duration';

-- 特定データベースのクエリのみ
EXEC sp_BlitzCache @DatabaseName = 'YourDatabase';
```

**利用可能なソート順序（@SortOrder）：**

| 値 | 説明 |
|---|------|
| cpu | CPU時間順（デフォルト） |
| reads | 読み取り数順 |
| writes | 書き込み数順 |
| duration | 実行時間順 |
| executions | 実行回数順 |
| memory grant | メモリ付与順 |
| spills | スピル順 |
| all | 全ソート順序で分析 |

**結果の見方：**

| 列名 | 説明 |
|------|------|
| QueryType | クエリの種類（Procedure, Statement等） |
| DatabaseName | データベース名 |
| TotalCPU / AverageCPU | 合計/平均CPU時間 |
| TotalReads / AverageReads | 合計/平均読み取り数 |
| ExecutionCount | 実行回数 |
| Warnings | 検出された警告 |
| QueryText | クエリテキスト |
| QueryPlan | 実行プラン |

### 6.2 sp_BlitzIndexによるインデックス分析

sp_BlitzIndexは、インデックスの設計とパフォーマンスを分析します。

**動作モード：**

| @Mode | 説明 | 用途 |
|-------|------|------|
| 0 | 診断モード（デフォルト） | 優先度1-100の問題を表示 |
| 1 | サマリーモード | データベースごとの統計概要 |
| 2 | 使用詳細モード | 既存インデックスの使用統計 |
| 3 | 欠落インデックスモード | SQL Serverの提案一覧 |
| 4 | 詳細診断モード | 全優先度（1-255）の問題 |

**基本的な実行方法：**

```sql
-- 特定データベースの診断
EXEC sp_BlitzIndex @DatabaseName = 'YourDatabase';

-- サマリーモード
EXEC sp_BlitzIndex @DatabaseName = 'YourDatabase', @Mode = 1;

-- 欠落インデックスの確認
EXEC sp_BlitzIndex @DatabaseName = 'YourDatabase', @Mode = 3;

-- 全データベースを分析
EXEC sp_BlitzIndex @GetAllDatabases = 1;
```

### 6.3 sp_BlitzLockによるデッドロック分析

sp_BlitzLockは、System Healthセッションからデッドロック情報を解析します。

```sql
-- 基本実行
EXEC sp_BlitzLock;

-- 特定データベースのデッドロックのみ
EXEC sp_BlitzLock @DatabaseName = 'YourDatabase';

-- 期間を指定
EXEC sp_BlitzLock
    @StartDate = '2026-02-01',
    @EndDate = '2026-02-19';
```

### 6.4 sp_BlitzAnalysisによる履歴分析

sp_BlitzAnalysisは、sp_BlitzFirstの出力テーブルに記録されたデータを分析します。

```sql
-- 過去のデータを分析
EXEC sp_BlitzAnalysis
    @OutputDatabaseName = 'DBATools',
    @StartDate = '2026-02-01',
    @EndDate = '2026-02-19';

-- BlitzCacheデータも含めて分析
EXEC sp_BlitzAnalysis
    @OutputDatabaseName = 'DBATools',
    @StartDate = '2026-02-01',
    @EndDate = '2026-02-19',
    @BlitzCacheSortorder = 'cpu';
```

---

## 7. 【STEP4-5】対処・最適化（問題の解決）

> **業務フローでの位置**: 詳細分析で特定した原因に基づいて、具体的な対処・最適化を実施し、改善結果を確認するステップです。

### 7.1 sp_BlitzIndexの提案に基づくインデックス作成

sp_BlitzIndexの結果には、インデックス作成用のT-SQLスクリプトが含まれます。

```sql
-- 欠落インデックスの確認
EXEC sp_BlitzIndex @DatabaseName = 'YourDatabase', @Mode = 3;
```

結果の`create_tsql`列に、インデックス作成スクリプトが含まれます。

**注意点：**
- 生成されるスクリプトには`ONLINE=?`が含まれています
- 本番環境では`ONLINE=ON`に変更して実行を検討してください
- インデックス作成前に、影響を十分に検討してください

### 7.2 問題クエリの特定と対処

sp_BlitzCacheで特定したリソース消費の大きいクエリに対して：

1. **クエリプランを確認**：QueryPlan列のプランを分析
2. **Warnings列を確認**：検出された問題パターンを確認
3. **対処方法を検討**：
   - インデックスの追加
   - クエリの書き換え
   - パラメータスニッフィングへの対処
   - 統計情報の更新

### 7.3 改善結果の確認

対処後、以下のコマンドで改善を確認します：

```sql
-- ヘルスチェックで全体状況を確認
EXEC sp_Blitz;

-- リアルタイム診断で現在の状態を確認
EXEC sp_BlitzFirst;

-- 問題クエリの状況を再確認
EXEC sp_BlitzCache @SortOrder = 'cpu';
```

---

## 8. バックアップ分析機能

### 8.1 sp_BlitzBackupsによるバックアップ履歴分析

sp_BlitzBackupsは、バックアップ履歴を分析し、RPO（目標復旧ポイント）とRTO（目標復旧時間）を推定します。

```sql
-- 基本実行（過去7日間）
EXEC sp_BlitzBackups;

-- 過去30日間を分析
EXEC sp_BlitzBackups @HoursBack = 720;

-- リストア速度を指定してRTOを推定
EXEC sp_BlitzBackups
    @RestoreSpeedFullMBps = 100,
    @RestoreSpeedDiffMBps = 100,
    @RestoreSpeedLogMBps = 100;
```

**主要なパラメータ：**

| パラメータ | 説明 | デフォルト |
|-----------|------|-----------|
| @HoursBack | 分析対象期間（時間） | 168（7日間） |
| @RestoreSpeedFullMBps | フルバックアップのリストア速度（MB/秒） | NULL |
| @RestoreSpeedDiffMBps | 差分バックアップのリストア速度（MB/秒） | NULL |
| @RestoreSpeedLogMBps | ログバックアップのリストア速度（MB/秒） | NULL |

---

## 9. データベースリストア機能

### 9.1 sp_DatabaseRestoreによるリストア実行

sp_DatabaseRestoreは、Ola Hallengrenのバックアップスクリプトと連携して、データベースのリストアを簡素化します。

**注意**: このプロシージャにはOla Hallengrenのメンテナンスソリューションが必要です。

```sql
-- ドライラン（実際にはリストアしない）
EXEC sp_DatabaseRestore
    @Database = 'YourDatabase',
    @BackupPathFull = 'C:\Backup\Full\',
    @Execute = 'N',
    @Debug = 1;

-- 実際にリストア
EXEC sp_DatabaseRestore
    @Database = 'YourDatabase',
    @BackupPathFull = 'C:\Backup\Full\',
    @BackupPathDiff = 'C:\Backup\Diff\',
    @BackupPathLog = 'C:\Backup\Log\',
    @Execute = 'Y';

-- ファイルを別の場所に移動してリストア
EXEC sp_DatabaseRestore
    @Database = 'YourDatabase',
    @BackupPathFull = 'C:\Backup\Full\',
    @MoveFiles = 1,
    @MoveDataDrive = 'D:\Data\',
    @MoveLogDrive = 'E:\Log\',
    @Execute = 'Y';
```

---

## 10. ユーティリティ機能

### 10.1 sp_ineachdbによる複数データベースへのコマンド実行

sp_ineachdbは、複数のデータベースに対してコマンドを実行します（sp_MSforeachdbの改良版）。

```sql
-- 全データベースでテーブル数を確認
EXEC sp_ineachdb @command = 'SELECT DB_NAME(), COUNT(*) FROM sys.tables';

-- 特定のデータベースのみ対象
EXEC sp_ineachdb
    @command = 'SELECT DB_NAME(), COUNT(*) FROM sys.tables',
    @database_list = 'DB1, DB2, DB3';

-- システムデータベースを除外
EXEC sp_ineachdb
    @command = 'SELECT DB_NAME(), COUNT(*) FROM sys.tables',
    @exclude_list = 'master, model, msdb, tempdb';

-- ONLINEのデータベースのみ対象
EXEC sp_ineachdb
    @command = 'SELECT DB_NAME(), COUNT(*) FROM sys.tables',
    @state_desc = 'ONLINE';
```

---

## 11. 日常業務の流れ

本セクションでは、業務フローに沿った日常業務の流れを説明します。

```
業務フロー概要（再掲）
==================================================================
【STEP 1】定期ヘルスチェックで問題を早期発見 -> 4章参照
    |
    v
【STEP 2】リアルタイム診断で現在の状況を把握 -> 5章参照
    |
    v
【STEP 3】詳細分析で問題の原因を特定 -> 6章参照
    |
    v
【STEP 4】原因に基づいた対処・最適化を実施 -> 7章参照
    |
    v
【STEP 5】改善結果を確認し、継続的な監視を実施 -> 7章参照
==================================================================
```

### 11.1 【DBA】日次ヘルスチェック

毎日の始業時に、サーバーの健康状態を確認します。

```sql
-- 1. 基本ヘルスチェック
EXEC sp_Blitz @IgnorePrioritiesAbove = 50;

-- 2. バックアップ状況確認
EXEC sp_BlitzBackups @HoursBack = 24;

-- 3. 前日のパフォーマンス問題確認（テーブル出力している場合）
EXEC sp_BlitzAnalysis
    @OutputDatabaseName = 'DBATools',
    @StartDate = DATEADD(day, -1, GETDATE()),
    @EndDate = GETDATE();
```

### 11.2 【DBA】週次詳細チェック

週に一度、より詳細なチェックを実施します。

```sql
-- 1. 詳細ヘルスチェック
EXEC sp_Blitz @CheckUserDatabaseObjects = 1, @CheckServerInfo = 1;

-- 2. インデックス分析
EXEC sp_BlitzIndex @GetAllDatabases = 1;

-- 3. 過去1週間のパフォーマンス傾向
EXEC sp_BlitzAnalysis
    @OutputDatabaseName = 'DBATools',
    @StartDate = DATEADD(week, -1, GETDATE()),
    @EndDate = GETDATE();
```

### 11.3 【DBA】パフォーマンス問題発生時の対応

パフォーマンス問題が報告された場合の対応フローです。

```sql
-- STEP 1: 現在何が起きているか確認
EXEC sp_BlitzFirst @ExpertMode = 1, @Seconds = 10;

-- STEP 2: 実行中のクエリを確認
EXEC sp_BlitzWho;

-- STEP 3: リソース消費の大きいクエリを特定
EXEC sp_BlitzCache @SortOrder = 'cpu';
EXEC sp_BlitzCache @SortOrder = 'reads';

-- STEP 4: インデックスの問題を確認
EXEC sp_BlitzIndex @DatabaseName = '問題のDB';

-- STEP 5: デッドロックが疑われる場合
EXEC sp_BlitzLock;
```

---

## 12. よくある質問と対処法

### 12.1 権限に関するQ&A

**Q: 「The user does not have VIEW SERVER STATE permissions」エラーが表示されます**

A: 以下を確認してください：
1. 使用しているログインにVIEW SERVER STATE権限があるか確認
2. sysadminロールのメンバーであれば自動的に権限があります
3. 権限がない場合は、管理者に権限付与を依頼してください

```sql
-- 権限を付与する（管理者が実行）
GRANT VIEW SERVER STATE TO [YourLogin];
```

**Q: 一部のチェックがスキップされると表示されます**

A: sysadmin権限がない場合、一部のチェック（DBCC CHECKDBの日付確認等）は自動的にスキップされます。これは正常な動作です。結果に「Some Checks Skipped」と表示されます。

### 12.2 実行に関するQ&A

**Q: sp_Blitzの実行に時間がかかります**

A: 以下を試してください：
1. `@CheckUserDatabaseObjects = 0`を指定してユーザーオブジェクトのチェックをスキップ
2. データベース数が50以上の場合、`@BringThePain = 1`が必要
3. 特定の優先度のみに絞る（`@IgnorePrioritiesAbove = 100`等）

**Q: sp_BlitzCacheで「Invalid sort order」エラーが出ます**

A: @SortOrderパラメータには有効な値を指定してください：
- cpu, reads, writes, duration, executions, memory grant, spills, all

### 12.3 出力に関するQ&A

**Q: 結果をExcelにエクスポートしたい**

A: SSMSの結果グリッドを右クリックし、「結果の保存」を選択してCSV形式で保存できます。または、`@ExportToExcel = 1`パラメータを使用します（sp_BlitzCache）。

**Q: 結果をテーブルに保存したい**

A: 各プロシージャの@Output*パラメータを使用します。

```sql
EXEC sp_Blitz
    @OutputDatabaseName = 'DBATools',
    @OutputSchemaName = 'dbo',
    @OutputTableName = 'BlitzResults';
```

---

## 13. トラブルシューティング

### 13.1 エラーメッセージと対処法

| エラーメッセージ | 原因 | 対処法 |
|----------------|------|--------|
| The user does not have VIEW SERVER STATE permissions | VIEW SERVER STATE権限がない | 管理者に権限付与を依頼 |
| The database you specified does not exist | 指定したデータベースが存在しない | データベース名を確認 |
| Invalid sort order chosen | 無効なソート順序 | 有効なソート順序を指定（cpu, reads等） |
| Only global temp tables are supported | ローカル一時テーブルを指定 | ##で始まるグローバル一時テーブルを使用 |
| Running sp_BlitzIndex on a server with 50+ databases may cause temporary problems | データベース数が50以上 | @BringThePain = 1を指定 |

### 13.2 よくあるトラブルと解決方法

**トラブル: プロシージャが見つからない**

解決方法：
1. masterデータベースにプロシージャがインストールされているか確認
2. インストールされていない場合は、Install-All-Scripts.sqlを実行

**トラブル: 実行結果が空（行が返されない）**

解決方法：
1. 問題が検出されなかった可能性があります（これは良いことです）
2. @IgnorePrioritiesBelow/Aboveパラメータでフィルタされていないか確認
3. @DatabaseNameが正しく指定されているか確認

**トラブル: Azure SQL Databaseで一部機能が動作しない**

解決方法：
- Azure SQL DatabaseではInstall-Azure.sqlを使用してインストール
- 一部の機能（DMVアクセス等）はAzure SQL DBでは制限があります

### 13.3 サポートへの連絡方法

First Responder Kitに関する問題やフィードバックは、以下で報告できます：

- GitHub Issues: https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues
- 公式サイト: http://FirstResponderKit.org

---

## 改訂履歴

| 版数 | 改訂日 | 改訂内容 |
|-----|--------|---------|
| 1.0 | 2026-02-19 | 初版作成 |

---

*本マニュアルは、SQL Server First Responder Kitのエンドユーザー向け業務運用マニュアルです。*
*システムの更新により、画面や操作方法が変更される場合があります。*
*バージョン: 8.29（2026年2月3日時点の情報に基づく）*
