---
generated_at: 2026-02-19 10:30:00
metrics:
  claims_total: 70
  claims_with_evidence: 68
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：sp_BlitzWho 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：68 / 70、根拠なし：2
- 優先レビュー（高）
  1. **UT-BWH-070**：SQL Server 2022固有機能のテストケース - ソースコードに明示的な2022対応がないため推測
  2. **UT-BWH-055**：大量セッションのパフォーマンステスト - 具体的な上限がコードに明示されていない

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `sp_BlitzWho.sql` 行5-30 - ストアドプロシージャ定義とパラメータ宣言
- E-02: `sp_BlitzWho.sql` 行36-41 - バージョン情報とVersionCheckMode処理
- E-03: `sp_BlitzWho.sql` 行45-85 - @Help=1のヘルプ表示処理
- E-04: `sp_BlitzWho.sql` 行88-134 - 変数初期化とバージョン解析
- E-05: `sp_BlitzWho.sql` 行136-156 - @GetLiveQueryPlanのデフォルト値設定
- E-06: `sp_BlitzWho.sql` 行158-573 - 出力テーブル作成・更新・ビュー作成処理
- E-07: `sp_BlitzWho.sql` 行575-588 - HADRレプリカのREAD_ONLYデータベース除外処理
- E-08: `sp_BlitzWho.sql` 行590-689 - ブロッキングチェック用クエリ生成
- E-09: `sp_BlitzWho.sql` 行692-894 - SQL Server 2008-2012向けクエリ生成
- E-10: `sp_BlitzWho.sql` 行896-1202 - SQL Server 2012以降向けクエリ生成
- E-11: `sp_BlitzWho.sql` 行1204-1226 - 最小値フィルタ条件の構築（@MinElapsedSeconds等）
- E-12: `sp_BlitzWho.sql` 行1228-1258 - @SortOrderによるORDER BY句生成
- E-13: `sp_BlitzWho.sql` 行1261-1373 - INSERT文生成（テーブル出力時）
- E-14: `sp_BlitzWho.sql` 行1376-1390 - MAX_GRANT_PERCENTヒント追加（50GB以上メモリ時）
- E-15: `sp_BlitzWho.sql` 行1396-1404 - @Debug時のPRINT出力と最終実行

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | デフォルトパラメータで実行中クエリ一覧が取得できる | E-01, E-09, E-10 | ○ |
| C-02 | @Help=1でヘルプ情報が表示される | E-03 | ○ |
| C-03 | @VersionCheckMode=1でバージョン情報のみ返却 | E-02 | ○ |
| C-04 | @ShowSleepingSPIDs=0でスリープSPID除外 | E-09 (行889-893), E-10 (行1195-1199) | ○ |
| C-05 | @ShowSleepingSPIDs=1でオープントランザクション持ちスリープ表示 | E-09 (行892), E-10 (行1198) | ○ |
| C-06 | @ShowSleepingSPIDs=2で全スリープセッション表示 | E-09 (行893), E-10 (行1199) | ○ |
| C-07 | @ExpertMode=1で追加詳細カラム返却 | E-09 (行756-826), E-10 (行999-1111) | ○ |
| C-08 | @Debug=1でSQL文がPRINT出力 | E-15 (行1396-1400) | ○ |
| C-09 | 出力テーブル指定時にテーブルが作成される | E-06 (行166-283) | ○ |
| C-10 | 既存出力テーブルに結果追記 | E-13 | ○ |
| C-11 | @OutputTableRetentionDaysで古いデータ削除 | E-06 (行316-333) | ○ |
| C-12 | @MinElapsedSecondsでフィルタ適用 | E-11 (行1208-1209) | ○ |
| C-13 | @MinCPUTimeでフィルタ適用 | E-11 (行1210-1211) | ○ |
| C-14 | @MinLogicalReadsでフィルタ適用 | E-11 (行1212-1213) | ○ |
| C-15 | @MinPhysicalReadsでフィルタ適用 | E-11 (行1214-1215) | ○ |
| C-16 | @MinWritesでフィルタ適用 | E-11 (行1216-1217) | ○ |
| C-17 | @MinTempdbMBでフィルタ適用 | E-11 (行1218-1219) | ○ |
| C-18 | @MinRequestedMemoryKBでフィルタ適用 | E-11 (行1220-1221) | ○ |
| C-19 | @MinBlockingSecondsでフィルタ適用 | E-11 (行1222-1224) | ○ |
| C-20 | @SortOrder='elapsed time'でソート | E-12 (行1256) | ○ |
| C-21 | @SortOrder='session_id'でソート | E-12 (行1229) | ○ |
| C-22 | @SortOrder='query_cost'でソート | E-12 (行1230) | ○ |
| C-23 | @SortOrder='database_name'でソート | E-12 (行1231) | ○ |
| C-24 | @SortOrder='login_name'でソート | E-12 (行1234) | ○ |
| C-25 | @SortOrder='request_cpu_time'でソート | E-12 (行1237) | ○ |
| C-26 | @GetLiveQueryPlan=1でライブクエリプラン取得 | E-05, E-08 (行681-688) | ○ |
| C-27 | @GetLiveQueryPlan=0でライブクエリプラン取得されない | E-10 (行940-947) | ○ |
| C-28 | @ShowActualParameters=1でライブパラメータ情報表示 | E-10 (行953-956) | ○ |
| C-29 | @GetOuterCommand=1で外部コマンド取得 | E-08 (行616-669), E-09 (行717-719), E-10 (行935-937) | ○ |
| C-30 | @CheckDateOverrideで日時上書き | E-13 (行1369), E-15 (行1402-1404) | ○ |
| C-31 | ブロッキングチェーン情報正しく取得 | E-08, E-09 (行699-708), E-10 (行917-926) | ○ |
| C-32 | 待機情報正しく取得 | E-09 (行841-852), E-10 (行1126-1137) | ○ |
| C-33 | クエリテキスト正しく抽出 | E-09 (行710-716), E-10 (行928-934) | ○ |
| C-34 | クエリプラン取得 | E-09 (行721), E-10 (行939) | ○ |
| C-35 | tempdb割当量正しく計算 | E-09 (行879-885), E-10 (行1172-1178) | ○ |
| C-36 | トランザクション分離レベル正しく表示 | E-09 (行778-787), E-10 (行1020-1029) | ○ |
| C-37 | 暗黙トランザクション検出 | E-09 (行730-738), E-10 (行973-981) | ○ |
| C-38 | メモリグラント情報表示 | E-09 (行789-823), E-10 (行1072-1106) | ○ |
| C-39 | Resource Governor情報表示 | E-09 (行823-824), E-10 (行1107-1108) | ○ |
| C-40 | SQLジョブ名がprogram_nameに表示 | E-09 (行743-753), E-10 (行986-997) | ○ |
| C-41 | Deltaビュー作成 | E-06 (行338-571) | ○ |
| C-42 | セッションウェイト情報表示（SQL Server 2016以降） | E-04 (行98-118), E-10 (行907-909, 966-970) | ○ |
| C-43 | クエリ統計情報（DOP、メモリ）表示 | E-10 (行1031-1069) | ○ |
| C-44 | キャッシュパラメータ情報表示 | E-10 (行948-952) | ○ |
| C-45 | fix_parameter_sniffingコマンド生成 | E-09 (行760), E-10 (行1002) | ○ |
| C-46 | HADRレプリカのREAD_ONLYデータベース除外 | E-07 | ○ |
| C-47 | Azure SQL Databaseで実行可能 | E-04 (行92-93), E-06 (行146-150) | ○ |
| C-48 | 50GB以上メモリ環境でMAX_GRANT_PERCENTヒント付与 | E-14 | ○ |
| C-49 | @ShowSleepingSPIDsの境界値0 | E-09 (行889-891), E-10 (行1195-1196) | ○ |
| C-50 | @ShowSleepingSPIDsの境界値2 | E-09 (行893), E-10 (行1199) | ○ |
| C-51 | @MinElapsedSecondsが0の場合 | E-11 (行1204) | ○ |
| C-52 | @OutputTableRetentionDaysの最小値 | E-06 (行317) | ○ |
| C-53 | @OutputTableRetentionDaysの最大値（TINYINT） | E-01 (行13) | ○ |
| C-54 | 実行中クエリが0件の場合 | E-09, E-10 | ○ |
| C-55 | 大量セッション存在時の動作 | **根拠なし** | △ |
| C-56 | 存在しないDB指定時の動作 | E-06 (行158-161) | ○ |
| C-57 | NULL Schema指定時の動作 | E-06 (行144-155) | ○ |
| C-58 | 不正SortOrder指定時の動作 | E-12 (行1256) | ○ |
| C-59 | 自身のセッションが結果に含まれない | E-09 (行886), E-10 (行1191) | ○ |
| C-60 | host_nameがNULLのセッション除外 | E-09 (行887), E-10 (行1192) | ○ |
| C-61 | SQL Server 2008 R2以前での動作 | E-09, E-10 (行692, 896) | ○ |
| C-62 | @GetLiveQueryPlanで権限エラー時の動作 | E-08 (行592) | ○ |
| C-63 | ロック待機タイムアウト対応 | E-08 (行592) | ○ |
| C-64 | JoinKeyカラム自動追加 | E-06 (行286-290) | ○ |
| C-65 | cached_parameter_infoカラム自動追加 | E-06 (行293-296) | ○ |
| C-66 | live_parameter_infoカラム自動追加 | E-06 (行298-302) | ○ |
| C-67 | outer_commandカラム自動追加 | E-06 (行304-308) | ○ |
| C-68 | wait_resourceカラム自動追加 | E-06 (行310-314) | ○ |
| C-69 | 複数フィルタ条件の組み合わせ（OR条件） | E-11 (行1207, 1225) | ○ |
| C-70 | SQL Server 2022固有機能対応 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- **C-55（大量セッションのパフォーマンステスト）**: ソースコードに明示的な上限やパフォーマンス対策の記述がない。MAX_GRANT_PERCENTヒントは大規模メモリ環境向けであり、セッション数には言及なし。
  - 候補：実機テスト / パフォーマンステスト結果 / First Responder Kitのドキュメント
- **C-70（SQL Server 2022固有機能対応）**: ソースコードはSQL Server 2016以降の機能は対応しているが、2022固有の機能（Query Store hints, Intelligent Query Processing等）への明示的な対応は確認できない。バージョンチェック（@ProductVersionMajor >= 16）は存在するが、2022（バージョン16）固有の分岐はない。
  - 候補：SQL Server 2022リリースノート / First Responder Kit更新履歴

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全体として信頼度が高く（0.97）、主要機能はすべてソースコードで確認可能
- **1: 中リスク** - 大量セッション環境でのパフォーマンス特性は実機テストが必要
- **0: 低リスク** - SQL Server 2022対応は、2016以降の共通処理で動作する可能性が高い

## 6) レビュアーチェックリスト（最小）
- [ ] パラメータのデフォルト値と境界値が正しく設定されているか確認（@ShowSleepingSPIDs, @MinElapsedSeconds等）
- [ ] 各SQL Serverバージョン（2012, 2014, 2016, 2017, 2019, 2022）での動作確認が必要か検討
- [ ] Azure SQL Database環境での機能制限（Resource Governor、SQL Agentジョブ名解決等）を確認
- [ ] ブロッキング検出のテストケースが十分か確認（複雑なブロッキングチェーン）
- [ ] 出力テーブルのスキーマ自動更新が正しく動作するか確認（古いバージョンからのアップグレード時）
- [ ] LOCK_TIMEOUT 1000msの設定がライブクエリプラン取得に与える影響を確認
