---
generated_at: 2026-02-18 10:40:00
metrics:
  claims_total: 20
  claims_with_evidence: 20
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：573-Remove-DbaDbOrphanUser

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：20 / 20、根拠なし：0
- 優先レビュー（高）
  - 全ての主張に根拠が確認されました

## 2) 参照した情報（Evidence一覧）

- E-01: `public/Remove-DbaDbOrphanUser.ps1` - メイン関数ソースコード
- E-02: `public/Remove-DbaDbOrphanUser.ps1` 2-119行目 - ヘルプドキュメント
- E-03: `public/Remove-DbaDbOrphanUser.ps1` 120-132行目 - パラメータ定義
- E-04: `public/Remove-DbaDbOrphanUser.ps1` 133-137行目 - begin ブロック
- E-05: `public/Remove-DbaDbOrphanUser.ps1` 138-172行目 - インスタンス・DB取得処理
- E-06: `public/Remove-DbaDbOrphanUser.ps1` 163-172行目 - コンテナ型DBチェック
- E-07: `public/Remove-DbaDbOrphanUser.ps1` 174-185行目 - 孤立ユーザー取得
- E-08: `public/Remove-DbaDbOrphanUser.ps1` 194-202行目 - 同名ログイン確認
- E-09: `public/Remove-DbaDbOrphanUser.ps1` 205-291行目 - スキーマ処理
- E-10: `public/Remove-DbaDbOrphanUser.ps1` 297-308行目 - SQL構築
- E-11: `public/Remove-DbaDbOrphanUser.ps1` 310-329行目 - 削除実行

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | SqlInstanceパラメータは必須でパイプライン入力をサポート | E-03 (122行目: `[parameter(Mandatory, ValueFromPipeline)]`) | ○ |
| C-02 | Force指定時にConfirmPreferenceを'none'に設定 | E-04 (134行目: `if ($Force) { $ConfirmPreference = 'none' }`) | ○ |
| C-03 | アクセス可能で読み取り専用でないDBを取得 | E-05 (146行目: `Where-Object IsAccessible \| Where-Object ReadOnly -eq $false`) | ○ |
| C-04 | SQL 2012以降でコンテナ型DBをスキップ | E-06 (167-171行目: `if ($server.versionMajor -gt 10)` + ContainmentTypeチェック) | ○ |
| C-05 | Get-DbaDbOrphanUserで孤立ユーザーを検出 | E-07 (181行目: `$users = (Get-DbaDbOrphanUser -SqlInstance $server -Database $db.Name).SmoUser`) | ○ |
| C-06 | 呼び出し元がRepair-DbaDbOrphanUserの場合、パラメータのユーザーを使用 | E-07 (174-177行目: `if ($StackSource -eq "Repair-DbaDbOrphanUser")`) | ○ |
| C-07 | Repair-DbaDbOrphanUser以外からの呼び出し時に同名ログインを確認 | E-08 (194-202行目) | ○ |
| C-08 | スキーマ処理はSQL Server 2005以降で有効 | E-09 (205行目: `if ($server.versionMajor -gt 8)`) | ○ |
| C-09 | ユーザーが所有するスキーマを取得 | E-09 (213行目: `$Schemas = $db.Schemas \| Where-Object Owner -eq $dbuser.Name`) | ○ |
| C-10 | SQL 2008以下ではEnumObjectsに0x1FFFFFFFを渡す | E-09 (225-226行目) | ○ |
| C-11 | オブジェクトがあるスキーマはForce必須 | E-09 (231-253行目) | ○ |
| C-12 | 同名空スキーマはDROP SCHEMAで削除 | E-09 (254-271行目: `$DropSchema += "DROP SCHEMA [$($sch.Name)]"`) | ○ |
| C-13 | 異名空スキーマはALTER AUTHORIZATIONでdboに移譲 | E-09 (272-289行目) | ○ |
| C-14 | 出力オブジェクトはPSCustomObject | E-09 (238-247行目, 261-270行目, 278-287行目) | ○ |
| C-15 | 出力にComputerName, InstanceName, SqlInstance, DatabaseName, SchemaName, Action, SchemaOwnerBefore, SchemaOwnerAfterを含む | E-09 (各PSCustomObject定義) | ○ |
| C-16 | SQL Server 2000ではsp_droploginを使用 | E-10 (307行目: `$query = "EXEC master.dbo.sp_droplogin @loginame = N'$($dbuser.name)'"`) | ○ |
| C-17 | 同名ログイン存在時、Force未指定で削除をブロック | E-11 (317-319行目: 警告出力とContinue) | ○ |
| C-18 | ExecuteNonQueryでSQL実行 | E-11 (314行目, 325行目: `$server.Databases[$db.Name].ExecuteNonQuery($query)`) | ○ |
| C-19 | ConfirmImpactはMedium | E-03 (120行目: `ConfirmImpact = "Medium"`) | ○ |
| C-20 | 作者はClaudio SilvaとSimone Bizzotto | E-02 (60行目: `Author: Claudio Silva (@ClaudioESSilva) \| Simone Bizzotto (@niphlod)`) | ○ |

## 4) 不足情報（Unknown / Missing）

- 特になし

## 5) リスクフラグ（レビュー観点）

- リスク0（低リスク）：全ての主張がソースコードで確認されました
- リスク1（中リスク）：SQL Server 2000のsp_droplogin処理は古い構文を使用しており、テストカバレッジを確認する必要あり

## 6) レビュアーチェックリスト（最小）

- [ ] Get-DbaDbOrphanUserとの連携が正しく動作することを確認
- [ ] Repair-DbaDbOrphanUserからの呼び出し時にGet-PSCallStackが正しく動作するか確認
- [ ] コンテナ型データベースの判定が正しく動作するか確認
- [ ] SQL Server 2000環境でのsp_droplogin処理が正しく動作するか確認
