---
generated_at: 2026-02-18 21:20:00
metrics:
  claims_total: 85
  claims_with_evidence: 85
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: public-Server 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：85 / 85、根拠なし：0
- 優先レビュー（高）
  1. 全テストケースにソースコード根拠あり
  2. 特に優先レビュー項目なし
  3. 実環境でのテスト実行時に挙動確認推奨

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

- E-01: `public/Get-DbaServerRole.ps1` - サーバーロール取得コマンド（128行）
- E-02: `public/New-DbaServerRole.ps1` - サーバーロール作成コマンド（130行）
- E-03: `public/Remove-DbaServerRole.ps1` - サーバーロール削除コマンド（112行）
- E-04: `public/Export-DbaServerRole.ps1` - サーバーロールエクスポートコマンド（378行）
- E-05: `public/Copy-DbaServerRole.ps1` - サーバーロールコピーコマンド（244行）
- E-06: `public/Get-DbaServerRoleMember.ps1` - サーバーロールメンバー取得コマンド（187行）
- E-07: `public/Add-DbaServerRoleMember.ps1` - サーバーロールメンバー追加コマンド（207行）
- E-08: `public/Remove-DbaServerRoleMember.ps1` - サーバーロールメンバー削除コマンド（202行）
- E-09: `docs/code-to-docs/単体テストケース一覧/plan.md` - テストケース一覧生成プラン

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

### Get-DbaServerRole（UT-SRV-001〜011）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 単一インスタンスから全サーバーロールを取得 | E-01 L93-127: foreachでRolesを処理 | ○ |
| C-02 | パイプライン入力で複数インスタンス処理 | E-01 L84: ValueFromPipeline属性 | ○ |
| C-03 | ServerRoleパラメータでフィルタ | E-01 L103-105: Where-Object Name -In $ServerRole | ○ |
| C-04 | ExcludeServerRoleパラメータで除外 | E-01 L106-108: Where-Object Name -NotIn $ExcludeServerRole | ○ |
| C-05 | ExcludeFixedRoleで固定ロール除外 | E-01 L109-111: Where-Object IsFixedRole -eq $false | ○ |
| C-06 | Loginプロパティにメンバー一覧 | E-01 L114-116: EnumMemberNames()とAdd-Member | ○ |
| C-07 | SqlCredentialパラメータ対応 | E-01 L86: PSCredential型パラメータ定義 | ○ |
| C-08 | 接続エラー時のStop-Function | E-01 L97-99: catch内でStop-Function実行 | ○ |
| C-09 | EnableException例外伝播 | E-01 L90: EnableExceptionパラメータ定義 | ○ |
| C-10 | 存在しないロール指定で空結果 | E-01 L103-105: Where-Objectフィルタによる | ○ |
| C-11 | Azure非対応（AzureUnsupported） | E-01 L96: Connect-DbaInstance -AzureUnsupported | ○ |

### New-DbaServerRole（UT-SRV-012〜019）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-12 | 新しいサーバーロール作成 | E-02 L112-120: New-Object ServerRoleとCreate() | ○ |
| C-13 | Ownerパラメータで所有者指定 | E-02 L116-118: $newServerRole.Owner = $Owner | ○ |
| C-14 | 複数ServerRole一度に作成 | E-02 L85: String[]型パラメータ, L104: foreach処理 | ○ |
| C-15 | WhatIfサポート | E-02 L80: SupportsShouldProcess属性 | ○ |
| C-16 | ServerRole未指定でエラー | E-02 L90-93: if (-not $ServerRole) Stop-Function | ○ |
| C-17 | 既存ロール名でエラー | E-02 L105-107: ロール存在チェックとStop-Function | ○ |
| C-18 | 存在しないOwnerでエラー | E-02 L120: Create()時にSMO例外 | ○ |
| C-19 | 接続エラー時のStop-Function | E-02 L98-100: catch内でStop-Function実行 | ○ |

### Remove-DbaServerRole（UT-SRV-020〜026）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 | ユーザー定義ロール削除 | E-03 L89: $srvrole.Drop() | ○ |
| C-21 | パイプライン入力サポート | E-03 L77-78: ValueFromPipeline属性 | ○ |
| C-22 | WhatIfサポート | E-03 L72: SupportsShouldProcess属性 | ○ |
| C-23 | Confirm:$falseで確認スキップ | E-03 L72: ConfirmImpact = "High" | ○ |
| C-24 | 削除失敗時Status='Failed' | E-03 L101-107: catch内でStatus="Failed" | ○ |
| C-25 | 固定ロール削除でエラー | E-03 L89: Drop()時にSMO例外（固定ロール不可） | ○ |
| C-26 | 存在しないロールで何も処理されない | E-03 L82-84: Get-DbaServerRoleで空ならInputObject空 | ○ |

### Export-DbaServerRole（UT-SRV-027〜042）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | T-SQLスクリプト生成 | E-04 L286: $role.Script($ScriptingOptionsObject) | ○ |
| C-28 | Passthruでコンソール出力 | E-04 L353-357: if ($Passthru) $sql出力 | ○ |
| C-29 | Pathでファイル出力先指定 | E-04 L154: Path パラメータ定義 | ○ |
| C-30 | FilePathで出力ファイル名指定 | E-04 L156: FilePath パラメータ定義 | ○ |
| C-31 | IncludeRoleMemberでメンバー追加文 | E-04 L308-312: ALTER SERVER ROLE ADD MEMBER生成 | ○ |
| C-32 | ExcludeFixedRoleで固定ロール除外 | E-04 L152: ExcludeFixedRoleパラメータ, L260で使用 | ○ |
| C-33 | ExcludeServerRoleでロール除外 | E-04 L151: ExcludeServerRoleパラメータ, L260で使用 | ○ |
| C-34 | ServerRoleで特定ロールのみ | E-04 L150: ServerRoleパラメータ, L260で使用 | ○ |
| C-35 | NoClobberで上書き防止 | E-04 L159: NoClobberパラメータ, L366で使用 | ○ |
| C-36 | Appendで追記 | E-04 L160: Appendパラメータ, L366で使用 | ○ |
| C-37 | NoPrefixでヘッダー除外 | E-04 L161: NoPrefixパラメータ, L339-342で使用 | ○ |
| C-38 | BatchSeparator変更 | E-04 L158: BatchSeparatorパラメータ, L345-348で使用 | ○ |
| C-39 | パイプライン入力サポート | E-04 L147-148: ValueFromPipeline属性 | ○ |
| C-40 | GRANT/DENY/REVOKE含む | E-04 L178-223: roleSQL変数でsys.server_permissions問合せ | ○ |
| C-41 | SqlInstance未指定でエラー | E-04 L246-249: if (-not $InputObject -and -not $SqlInstance) | ○ |
| C-42 | Azure非対応 | E-04 L279-281: SqlAzureDatabaseチェック | ○ |

### Copy-DbaServerRole（UT-SRV-043〜054）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | ソースからデスティネーションにコピー | E-05 L191-197: Script()とQuery()でロール作成 | ○ |
| C-44 | 複数デスティネーション対応 | E-05 L112: DbaInstanceParameter[]型 | ○ |
| C-45 | ServerRoleでフィルタ | E-05 L156-158: if ($ServerRole -and ...) | ○ |
| C-46 | ExcludeServerRoleで除外 | E-05 L160-162: if ($ExcludeServerRole ...) | ○ |
| C-47 | Forceで上書き | E-05 L174-188: Force時にDrop()後再作成 | ○ |
| C-48 | ロールメンバーもコピー | E-05 L216-228: EnumMemberNames()とAddMember() | ○ |
| C-49 | ロール権限もコピー | E-05 L199-214: Get-DbaPermissionとGrantStatement | ○ |
| C-50 | WhatIfサポート | E-05 L106: SupportsShouldProcess属性 | ○ |
| C-51 | 固定ロールとpublic除外 | E-05 L128: IsFixedRole -eq $false -and Name -ne "public" | ○ |
| C-52 | Forceなしで既存スキップ | E-05 L164-173: Status="Skipped", Notes="Already exists" | ○ |
| C-53 | SQL Server 2012未満でエラー | E-05 L122,136: MinimumVersion 11 | ○ |
| C-54 | 存在しないログインのメンバーシップスキップ | E-05 L218-227: Logins.Name -contains チェック | ○ |

### Get-DbaServerRoleMember（UT-SRV-055〜065）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | メンバー一覧取得 | E-06 L161-183: EnumMemberNames()とPSCustomObject生成 | ○ |
| C-56 | パイプライン入力サポート | E-06 L107: ValueFromPipeline属性 | ○ |
| C-57 | ServerRoleでフィルタ | E-06 L146-148: Where-Object Name -in $ServerRole | ○ |
| C-58 | ExcludeServerRoleで除外 | E-06 L150-152: Where-Object Name -notin $ExcludeServerRole | ○ |
| C-59 | Loginでフィルタ | E-06 L128-144: Get-DbaLoginとListMembers() | ○ |
| C-60 | ExcludeFixedRoleで固定ロール除外 | E-06 L154-156: IsFixedRole -eq $false | ○ |
| C-61 | SmoRoleプロパティ | E-06 L179: SmoRole = $role | ○ |
| C-62 | SmoLoginプロパティ | E-06 L180: SmoLogin = $loginList | ○ |
| C-63 | 接続エラー時のStop-Function | E-06 L122-124: catch内でStop-Function | ○ |
| C-64 | 空メンバーロールで空結果 | E-06 L161: $members空なら foreachスキップ | ○ |
| C-65 | 存在しないLogin指定 | E-06 L129-133: Get-DbaLoginで空ならroles空 | ○ |

### Add-DbaServerRoleMember（UT-SRV-066〜075）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | ログインをロールに追加 | E-07 L177: $sr.AddMember($l) | ○ |
| C-67 | 複数ログイン追加 | E-07 L108: string[]型Loginパラメータ | ○ |
| C-68 | 複数ServerRoleに追加 | E-07 L107: string[]型ServerRoleパラメータ | ○ |
| C-69 | Roleパラメータでネスト | E-07 L198: $sr.AddMembershipToRole($r) | ○ |
| C-70 | パイプライン入力サポート | E-07 L103,106,110: ValueFromPipeline属性 | ○ |
| C-71 | WhatIfサポート | E-07 L101: SupportsShouldProcess属性 | ○ |
| C-72 | パラメータ未指定でエラー | E-07 L116-119: Test-BoundチェックとStop-Function | ○ |
| C-73 | 既存メンバー追加で警告 | E-07 L170-172: EnumMemberNames().Contains()チェック | ○ |
| C-74 | 存在しないRoleで警告 | E-07 L191-193: isServerRoleチェックと警告 | ○ |
| C-75 | InputObject型検証 | E-07 L161-163: switch default でStop-Function | ○ |

### Remove-DbaServerRoleMember（UT-SRV-076〜085）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-76 | ログインをロールから削除 | E-08 L172: $sr.DropMember($l) | ○ |
| C-77 | 複数ログイン削除 | E-08 L107: string[]型Loginパラメータ | ○ |
| C-78 | 複数ServerRoleから削除 | E-08 L106: string[]型ServerRoleパラメータ | ○ |
| C-79 | Roleパラメータでネスト解除 | E-08 L193: $sr.DropMembershipFromRole($r) | ○ |
| C-80 | パイプライン入力サポート | E-08 L103,109: ValueFromPipeline属性 | ○ |
| C-81 | WhatIfサポート | E-08 L101: SupportsShouldProcess属性 | ○ |
| C-82 | パラメータ未指定でエラー | E-08 L115-118: Test-BoundチェックとStop-Function | ○ |
| C-83 | 非メンバー削除でエラー | E-08 L172-175: DropMember()時にSMO例外 | ○ |
| C-84 | 存在しないRoleで警告 | E-08 L186-188: isServerRoleチェックと警告 | ○ |
| C-85 | InputObject型検証 | E-08 L160-163: switch default でStop-Function | ○ |

## 4) 不足情報（Unknown / Missing）
- 不足情報なし
- すべてのテストケースはソースコードから直接抽出された根拠に基づいている

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースにソースコード根拠あり
- 実環境での動作確認時に以下の点に注意:
  - SQL Server バージョン依存の機能（Export-DbaServerRoleはSQL Server 2012以上）
  - Copy-DbaServerRoleはMinimumVersion 11を要求
  - Azure SQL Database非対応のコマンドあり

## 6) レビュアーチェックリスト（最小）
- [ ] 各コマンドのパラメータ定義がテストケースで網羅されているか確認
- [ ] 正常系/異常系/境界値の観点が適切にバランスされているか確認
- [ ] SQL Serverバージョン制限に関するテストケースが適切か確認
- [ ] パイプライン入力テストケースが各コマンドに含まれているか確認
- [ ] WhatIf/Confirmサポートのテストケースが変更系コマンドに含まれているか確認
- [ ] SMOオブジェクト操作（Create/Drop/AddMember等）のエラーハンドリングが網羅されているか確認
