---
generated_at: 2026-02-18 16:15:00
metrics:
  claims_total: 90
  claims_with_evidence: 90
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：public-Availability.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：90 / 90、根拠なし：0
- 優先レビュー（高）
  1. なし - 全テストケースに根拠あり

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

- E-01: `public/Get-DbaAvailabilityGroup.ps1` - AG取得コマンド（154行）
- E-02: `public/New-DbaAvailabilityGroup.ps1` - AG作成コマンド（807行）
- E-03: `public/Set-DbaAvailabilityGroup.ps1` - AG設定変更コマンド（213行）
- E-04: `public/Remove-DbaAvailabilityGroup.ps1` - AG削除コマンド（131行）
- E-05: `public/Test-DbaAvailabilityGroup.ps1` - AG検証コマンド（337行）
- E-06: `public/Join-DbaAvailabilityGroup.ps1` - AGセカンダリ参加コマンド（137行）
- E-07: `public/Sync-DbaAvailabilityGroup.ps1` - AGオブジェクト同期コマンド（408行）
- E-08: `public/Compare-DbaAvailabilityGroup.ps1` - AGレプリカ比較コマンド（218行）
- E-09: `docs/code-to-docs/単体テストケース一覧/plan.md` - テスト計画書

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

### Get-DbaAvailabilityGroup テストケース (C-01 - C-08)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 単一インスタンスからAG情報を取得できること | E-01 (L117-153: foreach処理でAG取得) | ○ |
| C-02 | 特定のAG名でフィルタできること | E-01 (L131-133: Where-Object Name -in $AvailabilityGroup) | ○ |
| C-03 | IsPrimaryスイッチでプライマリ判定できること | E-01 (L143-146: IsPrimary判定ロジック) | ○ |
| C-04 | 複数インスタンスからAG情報を取得できること | E-01 (L118: foreach ($instance in $SqlInstance)) | ○ |
| C-05 | HADRが無効な場合に警告が出ること | E-01 (L125-127: IsHadrEnabled チェック) | ○ |
| C-06 | 接続エラー時に適切なエラー処理がされること | E-01 (L119-122: try-catch with ConnectionError) | ○ |
| C-07 | SQL Server 2008以下でエラーになること | E-01 (L120: Connect-DbaInstance -MinimumVersion 11) | ○ |
| C-08 | AGが0件の場合に空が返却されること | E-01 (L135: foreach ($ag in $ags) - 空の場合ループなし) | ○ |

### New-DbaAvailabilityGroup テストケース (C-09 - C-30)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | 基本的なAGを作成できること | E-02 (L604-668: AG作成処理) | ○ |
| C-10 | セカンダリレプリカを追加できること | E-02 (L671-688: Secondary処理, Add-DbaAgReplica呼出) | ○ |
| C-11 | データベースを含めてAGを作成できること | E-02 (L771-801: Add-DbaAgDatabase呼出) | ○ |
| C-12 | Basic AGを作成できること | E-02 (L612: ag.BasicAvailabilityGroup = $Basic) | ○ |
| C-13 | Contained AGを作成できること | E-02 (L621-624: ag.IsContained設定, バージョン16チェック) | ○ |
| C-14 | DHCPリスナーを構成できること | E-02 (L715-718: Add-DbaAgListener -Dhcp) | ○ |
| C-15 | 静的IPリスナーを構成できること | E-02 (L711-713: Add-DbaAgListener -IPAddress) | ○ |
| C-16 | 自動シーディングでAGを作成できること | E-02 (L654-656: SeedingMode設定) | ○ |
| C-17 | Passthruスイッチで作成前オブジェクトを取得できること | E-02 (L630-633: Passthru処理) | ○ |
| C-18 | ClusterType Noneで作成できること | E-02 (L617-619: ag.ClusterType設定) | ○ |
| C-19 | HADRが無効な場合にエラーになること | E-02 (L469-472: IsHadrEnabled チェック) | ○ |
| C-20 | 同名AGが存在する場合にエラーになること | E-02 (L512-515: Get-DbaAvailabilityGroup存在チェック) | ○ |
| C-21 | IPAddressとDhcp両方指定でエラーになること | E-02 (L434-437: Stop-Function排他チェック) | ○ |
| C-22 | 自動シーディングがSQL 2016未満でエラーになること | E-02 (L446-449: VersionMajor -lt 13 チェック) | ○ |
| C-23 | Basic AGがSQL 2016未満でエラーになること | E-02 (L451-454: VersionMajor -lt 13 チェック) | ○ |
| C-24 | Contained AGがSQL 2022未満でエラーになること | E-02 (L456-459: VersionMajor -lt 16 チェック) | ○ |
| C-25 | DBがFull Recoveryでない場合の処理 | E-02 (L590-598: RecoveryModel チェック) | ○ |
| C-26 | EndpointUrlの数が不正な場合にエラーになること | E-02 (L411-415: Count検証) | ○ |
| C-27 | EndpointUrlの形式が不正な場合にエラーになること | E-02 (L416-420: 正規表現検証) | ○ |
| C-28 | Linuxで無効なClusterTypeを指定した場合にエラーになること | E-02 (L541-547: HostPlatform Linux チェック) | ○ |
| C-29 | LinuxでDTC有効にした場合にエラーになること | E-02 (L548-553: Linux DTC チェック) | ○ |
| C-30 | SharedPathにアクセスできない場合にエラーになること | E-02 (L527-533: Test-DbaPath検証) | ○ |

### Set-DbaAvailabilityGroup テストケース (C-31 - C-39)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-31 | DTC設定を有効化できること | E-03 (L190-193: プロパティ設定ループ) | ○ |
| C-32 | 自動バックアップ設定を変更できること | E-03 (L190-193: プロパティ設定ループ) | ○ |
| C-33 | FailureConditionLevelを変更できること | E-03 (L190-193: プロパティ設定ループ) | ○ |
| C-34 | HealthCheckTimeoutを変更できること | E-03 (L190-193: プロパティ設定ループ) | ○ |
| C-35 | パイプライン入力でAG設定を変更できること | E-03 (L168: ValueFromPipeline) | ○ |
| C-36 | AllAvailabilityGroupsで全AG設定を変更できること | E-03 (L183: Get-DbaAvailabilityGroup呼出) | ○ |
| C-37 | SqlInstanceもInputObjectも指定なしでエラーになること | E-03 (L173-176: Test-Bound検証) | ○ |
| C-38 | SqlInstance指定時にAG指定なしでエラーになること | E-03 (L178-181: Test-Bound検証) | ○ |
| C-39 | ClusterConnectionOptionがSQL 2025未満で警告になること | E-03 (L197-202: VersionMajor -ge 17 チェック) | ○ |

### Remove-DbaAvailabilityGroup テストケース (C-40 - C-46)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | AGを削除できること | E-04 (L113-128: DROP AVAILABILITY GROUP実行) | ○ |
| C-41 | AllAvailabilityGroupsで全AGを削除できること | E-04 (L106-108, L111: Get-DbaAvailabilityGroup呼出) | ○ |
| C-42 | パイプライン入力でAGを削除できること | E-04 (L96-97: ValueFromPipeline) | ○ |
| C-43 | 複数AGを同時に削除できること | E-04 (L113: foreach ($ag in $InputObject)) | ○ |
| C-44 | SqlInstanceもInputObjectも指定なしでエラーになること | E-04 (L101-104: Test-Bound検証) | ○ |
| C-45 | SqlInstance指定時にAG指定なしでエラーになること | E-04 (L106-109: Test-Bound検証) | ○ |
| C-46 | 削除失敗時にエラー処理されること | E-04 (L125-127: catch Stop-Function) | ○ |

### Test-DbaAvailabilityGroup テストケース (C-47 - C-57)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | AGの接続状態をテストできること | E-05 (L152-161: ConnectionState検証) | ○ |
| C-48 | AddDatabaseパラメータでDB追加前提条件を検証できること | E-05 (L178-334: AddDatabase処理) | ○ |
| C-49 | 自動シーディングモードでDB追加を検証できること | E-05 (L277-282, L296-301: SeedingMode Automatic処理) | ○ |
| C-50 | UseLastBackupでバックアップ検証できること | E-05 (L201-210: Get-DbaDbBackupHistory呼出) | ○ |
| C-51 | AGが見つからない場合にエラーになること | E-05 (L123-128: AG存在チェック) | ○ |
| C-52 | プライマリでない場合にエラーになること | E-05 (L135-138: LocalReplicaRole検証) | ○ |
| C-53 | レプリカ接続が切断されている場合にエラーになること | E-05 (L152-161: ConnectionState検証) | ○ |
| C-54 | DBがFull Recoveryでない場合にエラーになること | E-05 (L192-194: RecoveryModel検証) | ○ |
| C-55 | DBのStatusがNormalでない場合にエラーになること | E-05 (L196-198: Status検証) | ○ |
| C-56 | UseLastBackupで最終バックアップがLogでない場合にエラーになること | E-05 (L207-209: Type Log検証) | ○ |
| C-57 | 自動シーディングがSQL 2016未満でエラーになること | E-05 (L181-184, L212-213: VersionMajor検証) | ○ |

### Join-DbaAvailabilityGroup テストケース (C-58 - C-65)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | セカンダリをAGに参加させられること | E-06 (L122-134: JoinAvailabilityGroup処理) | ○ |
| C-59 | パイプライン入力でAGに参加できること | E-06 (L90-91: ValueFromPipeline) | ○ |
| C-60 | ClusterTypeを指定してAGに参加できること | E-06 (L125-126: ALTER AVAILABILITY GROUP WITH CLUSTER_TYPE) | ○ |
| C-61 | 複数AGに同時参加できること | E-06 (L122: foreach ($ag in $AvailabilityGroup)) | ○ |
| C-62 | SqlInstanceもInputObjectも指定なしでエラーになること | E-06 (L95-98: Test-Bound検証) | ○ |
| C-63 | AvailabilityGroupが指定なしでエラーになること | E-06 (L110-113: AvailabilityGroup検証) | ○ |
| C-64 | 接続エラー時に適切なエラー処理がされること | E-06 (L116-120: try-catch ConnectionError) | ○ |
| C-65 | 参加失敗時にエラー処理されること | E-06 (L130-132: catch Stop-Function) | ○ |

### Sync-DbaAvailabilityGroup テストケース (C-66 - C-78)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | 全オブジェクトタイプを同期できること | E-07 (L282-401: Copy-Dba*呼出) | ○ |
| C-67 | 特定オブジェクトタイプを除外できること | E-07 (L162: ValidateSet Exclude, L282等: -notcontains) | ○ |
| C-68 | 特定ログインのみ同期できること | E-07 (L164: [string[]]$Login, L289: -Login $Login) | ○ |
| C-69 | 特定ジョブのみ同期できること | E-07 (L166: [string[]]$Job, L381-387: Job指定処理) | ○ |
| C-70 | ジョブを宛先で無効化できること | E-07 (L168: $DisableJobOnDestination, L392: DisableOnDestination) | ○ |
| C-71 | パスワード除外で同期できること | E-07 (L171: $ExcludePassword, L308等: -ExcludePassword) | ○ |
| C-72 | Forceで既存オブジェクトを上書きできること | E-07 (L172: $Force, L289等: -Force:$Force) | ○ |
| C-73 | パイプライン入力で同期できること | E-07 (L169-170: ValueFromPipeline) | ○ |
| C-74 | PrimaryもInputObjectも指定なしでエラーになること | E-07 (L181-184: Test-Bound検証) | ○ |
| C-75 | AGもSecondaryも指定なしでエラーになること | E-07 (L186-189: 複合条件検証) | ○ |
| C-76 | パスワード取得にDAC必要だがパイプラインがDAC接続でない場合にエラーになること | E-07 (L194-202: DAC接続検証) | ○ |
| C-77 | セカンダリが見つからない場合にエラーになること | E-07 (L274-277: secondaries null検証) | ○ |
| C-78 | 重複パイプライン入力時に同期が重複しないこと | E-07 (L249-260: dupe検出ロジック) | ○ |

### Compare-DbaAvailabilityGroup テストケース (C-79 - C-90)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | 全オブジェクトタイプを比較できること | E-08 (L139-141: Type=All展開) | ○ |
| C-80 | AgentJobのみ比較できること | E-08 (L144-164: AgentJob比較処理) | ○ |
| C-81 | Loginのみ比較できること | E-08 (L166-186: Login比較処理) | ○ |
| C-82 | Credentialのみ比較できること | E-08 (L188-200: Credential比較処理) | ○ |
| C-83 | Operatorのみ比較できること | E-08 (L202-214: Operator比較処理) | ○ |
| C-84 | 複数タイプを同時に比較できること | E-08 (L130-131: ValidateSet複数対応) | ○ |
| C-85 | システムジョブを除外して比較できること | E-08 (L132, L155-157: ExcludeSystemJob処理) | ○ |
| C-86 | システムログインを除外して比較できること | E-08 (L133, L177-179: ExcludeSystemLogin処理) | ○ |
| C-87 | 変更日時を含めて比較できること | E-08 (L134, L159-161, L181-183: IncludeModifiedDate処理) | ○ |
| C-88 | パイプライン入力で比較できること | E-08 (L126-127: ValueFromPipeline) | ○ |
| C-89 | 差異がない場合に空が返却されること | E-08 (Compare-DbaAgReplica*の出力仕様) | ○ |
| C-90 | Type='All'で全タイプに展開されること | E-08 (L139-141: Type展開ロジック) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全テストケースにソースコードからの直接的な根拠あり

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全90テストケースがソースコードに明確な根拠あり
- 実装詳細に依存するテストケースが多いため、コード変更時には対応するテストケースの更新が必要

## 6) レビュアーチェックリスト（最小）
- [ ] Get-DbaAvailabilityGroup: IsPrimaryスイッチの挙動が期待通りか（C-03）
- [ ] New-DbaAvailabilityGroup: 各バージョン制限チェックのバージョン番号が正しいか（C-22,C-23,C-24）
- [ ] New-DbaAvailabilityGroup: Linux制限のチェックが適切か（C-28,C-29）
- [ ] Set-DbaAvailabilityGroup: ClusterConnectionOptionのSQL 2025制限が正しいか（C-39）
- [ ] Sync-DbaAvailabilityGroup: DAC接続要求の判定が適切か（C-76）
- [ ] Compare-DbaAvailabilityGroup: 各Typeに対応するCompare-DbaAgReplica*コマンドの存在を確認（C-80-C-83）
