---
generated_at: 2026-02-19 15:30:00
metrics:
  claims_total: 65
  claims_with_evidence: 63
  claims_without_evidence: 2
confidence_derived: 0.97
---

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

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：63 / 65、根拠なし：2
- 優先レビュー（高）
  1. **UT-IED-055（大量DB処理）**：50以上のDBでのパフォーマンスは実環境テストが必要
  2. **UT-IED-063（SQL Server 2022対応）**：SQL Server 2022固有の動作確認が必要

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

- E-01: `sp_ineachdb.sql` 行1-3: プロシージャ作成/変更の定義
- E-02: `sp_ineachdb.sql` 行5-34: パラメータ定義（27個の入力パラメータ、3個のOUTPUTパラメータ）
- E-03: `sp_ineachdb.sql` 行40: バージョン情報 `@Version = '8.29', @VersionDate = '20260203'`
- E-04: `sp_ineachdb.sql` 行42-45: @VersionCheckMode処理
- E-05: `sp_ineachdb.sql` 行47-97: @Help処理（ヘルプメッセージ出力、RETURN -1）
- E-06: `sp_ineachdb.sql` 行99-108: 変数宣言（@exec, @sx, @db, @dbq, @cmd, @thisdb, @cr, @SQLVersion, @ServerName, @NoSpaces）
- E-07: `sp_ineachdb.sql` 行111: #ineachdbテーブル作成
- E-08: `sp_ineachdb.sql` 行165-216: @database_list, @exclude_list解析のCTE（角括弧、エスケープ対応）
- E-09: `sp_ineachdb.sql` 行218-237: @system_only, @user_only, @name_pattern, @exclude_pattern, DB属性フィルタ
- E-10: `sp_ineachdb.sql` 行240-254: @is_query_store_onフィルタ（SQL Server 2016以降、@SQLVersion >= 13）
- E-11: `sp_ineachdb.sql` 行257-261: @user_accessフィルタ（SINGLE_USER, MULTI_USER, RESTRICTED_USER）
- E-12: `sp_ineachdb.sql` 行264-281: @state_desc、アクセス可否、Collationチェック
- E-13: `sp_ineachdb.sql` 行285-315: AG対応（@SQLVersion >= 11、secondary_role_allow_connections、@is_ag_writeable_copy）
- E-14: `sp_ineachdb.sql` 行318-322: 処理対象0件時のRAISERROR（severity 1）
- E-15: `sp_ineachdb.sql` 行325-331: カーソル定義とOPEN
- E-16: `sp_ineachdb.sql` 行336-370: WHILEループ内の処理（@print_dbname, @select_dbname, @print_command, @print_command_only, @suppress_quotename）
- E-17: `sp_ineachdb.sql` 行339: 置換処理 `REPLACE(@command, @replace_character, REPLACE(@thisdb,'''',''''''))`
- E-18: `sp_ineachdb.sql` 行359-360: sp_executesql実行 `SET @exec = @dbq + @sx; EXEC @exec @cmd;`
- E-19: `sp_ineachdb.sql` 行364-367: TRY-CATCHエラーハンドリング（RAISERROR後も処理継続）
- E-20: `sp_ineachdb.sql` 行37-38: SET NOCOUNT ON; SET STATISTICS XML OFF;
- E-21: `docs/code-to-docs/機能設計書/10-sp_ineachdb.md`: 機能設計書（参照可能であれば）
- E-22: `docs/code-to-docs/バッチ設計書/10-sp_ineachdb.md`: バッチ設計書（参照可能であれば）

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | @Help=1でヘルプ表示、-1返却 | E-05 | ○ |
| C-02 | @VersionCheckMode=1で即座に終了 | E-04 | ○ |
| C-03 | @Version, @VersionDateが設定される | E-03 | ○ |
| C-04 | 基本コマンドが全DBで実行される | E-15, E-16, E-18 | ○ |
| C-05 | NULLコマンドの挙動 | E-02, E-18 | ○ |
| C-06 | 空文字列コマンドの挙動 | E-02, E-18 | ○ |
| C-07 | 構文エラー時のエラーハンドリング | E-19 | ○ |
| C-08 | @replace_characterで置換される | E-17 | ○ |
| C-09 | カスタム置換文字の動作 | E-02, E-17 | ○ |
| C-10 | 置換文字がない場合そのまま実行 | E-17 | ○ |
| C-11 | @print_dbname=1でDB名出力 | E-16 (行342-345) | ○ |
| C-12 | @select_dbname=1でSELECT結果返却 | E-16 (行347-350) | ○ |
| C-13 | @print_command=1でコマンド出力 | E-16 (行352-355) | ○ |
| C-14 | @print_command_only=1で実行されない | E-16 (行357-361) | ○ |
| C-15 | @suppress_quotename=1でQUOTENAMEなし | E-16 (行338) | ○ |
| C-16 | suppress_quotename時のセキュリティリスク | E-02 (コメント: use with caution) | ○ |
| C-17 | @system_only=1でシステムDBのみ | E-09 (行219: id IN 1,2,3,4, is_distributor) | ○ |
| C-18 | @user_only=1でユーザーDBのみ | E-09 (行220) | ○ |
| C-19 | @system_only=1 AND @user_only=1の矛盾 | E-09 | ○ |
| C-20 | @name_patternでパターン一致フィルタ | E-09 (行221) | ○ |
| C-21 | @name_pattern=N'%'で全DB | E-02 (デフォルト値) | ○ |
| C-22 | 一致なしで'No databases to process.' | E-14 | ○ |
| C-23 | @database_listで指定DBのみ | E-08 | ○ |
| C-24 | 角括弧付きDB名の解析 | E-08 (CTE処理) | ○ |
| C-25 | 1件のみの指定 | E-08 | ○ |
| C-26 | 存在しないDB名を含むリスト | E-08 (sys.databasesとのJOIN) | ○ |
| C-27 | @exclude_patternで除外 | E-09 (行222) | ○ |
| C-28 | @exclude_listで除外 | E-08 | ○ |
| C-29 | include/excludeの優先順位 | E-08 (行214: NOT EXISTS Out) | ○ |
| C-30 | @recovery_model_descフィルタ | E-09 (行230) | ○ |
| C-31 | 無効な復旧モデル名 | E-09 | ○ |
| C-32 | @compatibility_levelフィルタ | E-09 (行231) | ○ |
| C-33 | @state_desc=ONLINEフィルタ | E-12 | ○ |
| C-34 | @state_desc=OFFLINEフィルタ | E-12 (行279) | ○ |
| C-35 | @is_read_onlyフィルタ | E-09 (行232) | ○ |
| C-36 | @is_auto_close_onフィルタ | E-09 (行233) | ○ |
| C-37 | @is_auto_shrink_onフィルタ | E-09 (行234) | ○ |
| C-38 | @is_broker_enabledフィルタ | E-09 (行235) | ○ |
| C-39 | @user_access=MULTI_USERフィルタ | E-11 | ○ |
| C-40 | @user_access=SINGLE_USERフィルタ | E-11 | ○ |
| C-41 | @user_access=RESTRICTED_USERフィルタ | E-11 | ○ |
| C-42 | 無効なuser_access値 | E-11 (IF条件外は無視) | ○ |
| C-43 | @is_ag_writeable_copy=1フィルタ | E-13 (行300-314) | ○ |
| C-44 | 非AG環境での動作 | E-13 (行285: オブジェクト存在チェック) | ○ |
| C-45 | @is_query_store_on=1フィルタ | E-10 | ○ |
| C-46 | @is_query_store_on=0フィルタ | E-10 | ○ |
| C-47 | SQL Server 2016未満でのQSフィルタ | E-10 (行240: @SQLVersion >= 13) | ○ |
| C-48 | 複合フィルタ条件 | E-09, E-10, E-11 | ○ |
| C-49 | 全DB除外時のエラー | E-14 | ○ |
| C-50 | AGセカンダリ接続不可DB除外 | E-13 (行286-298) | ○ |
| C-51 | HAS_DBACCESS=0除外 | E-12 (行275) | ○ |
| C-52 | state & 992 <> 0除外 | E-12 (行273) | ○ |
| C-53 | Collation NULL除外 | E-12 (行276) | ○ |
| C-54 | distributor DBのシステムDB扱い | E-09 (行219, 220: is_distributor) | ○ |
| C-55 | 大量DB処理 | E-15 (カーソル処理) | △ |
| C-56 | エラー時の処理継続 | E-19 | ○ |
| C-57 | シングルクォートエスケープ | E-17 (REPLACE(@thisdb,'''','''''')) | ○ |
| C-58 | 角括弧エスケープ解析 | E-08 (行194-195: DoubleBracket) | ○ |
| C-59 | 空白文字トリミング | E-08 (行200-202: PATINDEX @NoSpaces) | ○ |
| C-60 | SET NOCOUNT ON | E-20 | ○ |
| C-61 | SET STATISTICS XML OFF | E-20 | ○ |
| C-62 | sp_executesql実行コンテキスト | E-18 | ○ |
| C-63 | SQL Server 2022 model DB QS除外 | E-10 (行251) | △ |
| C-64 | 複数出力オプション同時使用 | E-16 | ○ |
| C-65 | 改行文字処理 | E-06 (行105: @cr = CHAR(13) + CHAR(10)) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-IED-055（大量DB処理）**：50以上のデータベースでのパフォーマンス特性はソースコードからは確認できない。カーソルを使用しているため処理は逐次的だが、実際のパフォーマンスは環境依存
  - 候補：パフォーマンステスト結果 / 実環境での計測データ / ベンチマーク結果
- **UT-IED-063（SQL Server 2022対応）**：コード行251のmodelデータベース除外ロジックはコメントで「SQL2022+」と記載があるが、実際の動作確認は必要
  - 候補：SQL Server 2022環境でのテスト / Microsoft公式ドキュメント

## 5) リスクフラグ（レビュー観点）
- **1（中リスク）**: @suppress_quotename=1使用時のSQLインジェクションリスク（UT-IED-016）
  - ソースコード行13のコメントで「use with caution」と警告あり
- **1（中リスク）**: 大量DB環境でのパフォーマンス（UT-IED-055）
  - カーソル処理のため、DB数に比例して処理時間が増加
- **0（低リスク）**: SQL Server バージョン依存の機能（Query Store, AG対応）
  - バージョンチェック（@SQLVersion）が適切に実装されている

## 6) レビュアーチェックリスト（最小）
- [ ] @suppress_quotename使用時のセキュリティリスクについて、テスト実行時の注意事項が明確か
- [ ] AG構成環境でのテストケース（UT-IED-043, 044, 050）の実行環境が準備できるか
- [ ] SQL Server 2022固有の動作（UT-IED-063）のテスト環境が準備できるか
- [ ] 大量DB環境（50以上）でのパフォーマンステストの実施可否
- [ ] @database_list, @exclude_listの角括弧・エスケープ処理のエッジケースが十分か
- [ ] エラー発生時の継続処理（UT-IED-056）の期待動作が業務要件と一致するか
