# 画面設計書 84-XEセッション管理

## 概要

本ドキュメントは、dbatools PowerShellモジュールにおける拡張イベント（Extended Events）セッション管理機能の設計仕様を定義する。XEセッションの取得、作成、開始、停止、削除、コピー、エクスポート、インポートを行う包括的なCLIを提供する。

### 本画面の処理概要

本機能は、SQL Server 2012以降の拡張イベント（Extended Events）セッションを管理するための統合コマンドラインインターフェースを提供する。XEセッションはSQL Serverの軽量で高性能なイベント処理システムであり、パフォーマンス監視、トラブルシューティング、セキュリティ監査に使用される。

**業務上の目的・背景**：Extended Eventsは、SQL Server Profilerに代わる次世代の診断ツールとして位置づけられている。本機能は、複数のSQL Serverインスタンスに対して一貫したXEセッション管理を可能にし、監視構成の標準化、環境間でのセッションコピー、セッション定義のバックアップ・復元を支援する。これにより、DBAは手動でのSSMS操作なしにスクリプトベースで診断環境を構築・維持できる。

**画面へのアクセス方法**：PowerShellコンソールまたはスクリプトから以下のコマンドを実行してアクセスする：
- `Get-DbaXESession -SqlInstance <インスタンス名>`
- `New-DbaXESession -SqlInstance <インスタンス名> -Name <セッション名>`
- `Start-DbaXESession -SqlInstance <インスタンス名> -Session <セッション名>`
- `Stop-DbaXESession -SqlInstance <インスタンス名> -Session <セッション名>`
- `Remove-DbaXESession -SqlInstance <インスタンス名> -Session <セッション名>`
- `Copy-DbaXESession -Source <ソース> -Destination <宛先>`
- `Export-DbaXESession -SqlInstance <インスタンス名>`
- `Import-DbaXESessionTemplate -SqlInstance <インスタンス名> -Template <テンプレート名>`

**主要な操作・処理内容**：
1. XEセッション一覧の取得と状態確認（Running/Stopped）
2. 新規XEセッションオブジェクトの作成
3. XEセッションの開始（即時実行またはスケジュール実行）
4. XEセッションの停止
5. XEセッションの削除（システムセッション保護付き）
6. インスタンス間でのXEセッションコピー
7. セッション定義のT-SQLスクリプトエクスポート
8. テンプレートからのセッションインポート

**画面遷移**：
- 入力元：SQL Server 2012以降のインスタンスが稼働していること
- 関連：`Get-DbaXESessionTemplate`でテンプレート一覧を事前確認
- 関連：`Get-DbaXESessionTarget`でターゲット情報を確認

**権限による表示制御**：sysadmin権限が必要。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|-------------------|
| 303 | Get-DbaXESession | 主機能 | XEセッション情報取得 |
| 356 | New-DbaXESession | 主機能 | XEセッション作成 |
| 440 | Start-DbaXESession | 主機能 | XEセッション開始 |
| 441 | Stop-DbaXESession | 主機能 | XEセッション停止 |
| 418 | Remove-DbaXESession | 主機能 | XEセッション削除 |
| 135 | Copy-DbaXESession | 主機能 | XEセッションコピー |
| 205 | Export-DbaXESession | 主機能 | XEセッションエクスポート |
| 327 | Import-DbaXESessionTemplate | 主機能 | テンプレートからインポート |

## 画面種別

コマンドラインインターフェース（CLI） / 管理・運用

## URL/ルーティング

PowerShellコマンド呼び出し：
- `Get-DbaXESession -SqlInstance <インスタンス名> [-Session <セッション名>]`
- `New-DbaXESession -SqlInstance <インスタンス名> -Name <セッション名>`
- `Start-DbaXESession -SqlInstance <インスタンス名> -Session <セッション名> [-StartAt <日時>] [-StopAt <日時>]`
- `Stop-DbaXESession -SqlInstance <インスタンス名> -Session <セッション名>`
- `Remove-DbaXESession -SqlInstance <インスタンス名> -Session <セッション名>`
- `Copy-DbaXESession -Source <ソース> -Destination <宛先> [-XeSession <セッション名>]`
- `Export-DbaXESession -SqlInstance <インスタンス名> [-Path <出力パス>] [-Passthru]`
- `Import-DbaXESessionTemplate -SqlInstance <インスタンス名> -Template <テンプレート名>`

## 入出力項目

### Get-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | はい | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| Session | object[] | いいえ | フィルタリング対象セッション名 |
| EnableException | switch | いいえ | 例外処理の有効化 |

### New-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | はい | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| Name | string | はい | セッション名 |
| EnableException | switch | いいえ | 例外処理の有効化 |

### Start-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | はい | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| Session | object[] | はい* | セッション名（AllSessionsと排他） |
| AllSessions | switch | はい* | 全ユーザーセッション開始 |
| StartAt | datetime | いいえ | スケジュール開始日時 |
| StopAt | datetime | いいえ | スケジュール停止日時 |
| InputObject | Microsoft.SqlServer.Management.XEvent.Session[] | いいえ | パイプライン入力 |
| EnableException | switch | いいえ | 例外処理の有効化 |

### Stop-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | はい | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| Session | object[] | はい* | セッション名（AllSessionsと排他） |
| AllSessions | switch | はい* | 全ユーザーセッション停止 |
| InputObject | Microsoft.SqlServer.Management.XEvent.Session[] | いいえ | パイプライン入力 |
| EnableException | switch | いいえ | 例外処理の有効化 |

### Remove-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | はい | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| Session | object[] | はい* | セッション名（AllSessionsと排他） |
| AllSessions | switch | はい* | 全ユーザーセッション削除 |
| InputObject | Microsoft.SqlServer.Management.XEvent.Session[] | いいえ | パイプライン入力 |
| EnableException | switch | いいえ | 例外処理の有効化 |

### Copy-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| Source | DbaInstanceParameter | はい | ソースインスタンス |
| Destination | DbaInstanceParameter[] | はい | 宛先インスタンス |
| SourceSqlCredential | PSCredential | いいえ | ソース認証情報 |
| DestinationSqlCredential | PSCredential | いいえ | 宛先認証情報 |
| XeSession | object[] | いいえ | コピー対象セッション名 |
| ExcludeXeSession | object[] | いいえ | 除外セッション名 |
| Force | switch | いいえ | 既存セッション上書き |
| EnableException | switch | いいえ | 例外処理の有効化 |

### Import-DbaXESessionTemplate 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | はい | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| Name | string | いいえ | カスタムセッション名 |
| Path | string[] | いいえ | カスタムテンプレートパス |
| Template | string[] | いいえ | 組み込みテンプレート名 |
| TargetFilePath | string | いいえ | ターゲットファイルパス |
| TargetFileMetadataPath | string | いいえ | メタデータファイルパス |
| StartUpState | string | いいえ | 起動状態（On/Off） |
| EnableException | switch | いいえ | 例外処理の有効化 |

### Export-DbaXESession 入力パラメータ

| パラメータ名 | 型 | 必須 | 説明 |
|-------------|-----|------|------|
| SqlInstance | DbaInstanceParameter[] | いいえ | 対象SQLインスタンス |
| SqlCredential | PSCredential | いいえ | 認証情報 |
| InputObject | Microsoft.SqlServer.Management.XEvent.Session[] | いいえ | パイプライン入力 |
| Session | string[] | いいえ | エクスポート対象セッション名 |
| Path | string | いいえ | 出力ディレクトリ |
| FilePath | string | いいえ | 出力ファイルパス |
| Encoding | string | いいえ | 文字エンコーディング |
| Passthru | switch | いいえ | コンソール出力 |
| BatchSeparator | string | いいえ | バッチ区切り文字 |
| NoPrefix | switch | いいえ | ヘッダコメント除外 |
| NoClobber | switch | いいえ | 上書き禁止 |
| Append | switch | いいえ | 追記モード |
| EnableException | switch | いいえ | 例外処理の有効化 |

## 表示項目

### Get-DbaXESession 出力オブジェクト

| プロパティ名 | 型 | 説明 |
|-------------|-----|------|
| ComputerName | string | コンピュータ名 |
| InstanceName | string | インスタンス名 |
| SqlInstance | string | 完全インスタンス名 |
| Name | string | セッション名 |
| Status | string | 状態（Running/Stopped） |
| StartTime | datetime | 開始日時 |
| AutoStart | bool | 自動開始フラグ |
| State | string | SMOオブジェクト状態 |
| Targets | Collection | ターゲットコレクション |
| TargetFile | string[] | ターゲットファイルパス |
| RemoteTargetFile | string[] | UNCパス |
| Events | Collection | イベントコレクション |
| MaxMemory | int | 最大メモリ（KB） |
| MaxEventSize | int | 最大イベントサイズ（KB） |
| Session | string | セッション名（エイリアス） |
| Parent | Server | 親サーバーオブジェクト |
| Store | XEStore | XEStoreオブジェクト |

### Remove-DbaXESession 出力オブジェクト

| プロパティ名 | 型 | 説明 |
|-------------|-----|------|
| ComputerName | string | コンピュータ名 |
| InstanceName | string | インスタンス名 |
| SqlInstance | string | 完全インスタンス名 |
| Session | string | セッション名 |
| Status | string | 状態（Removed） |

### Copy-DbaXESession 出力オブジェクト

| プロパティ名 | 型 | 説明 |
|-------------|-----|------|
| DateTime | DbaDateTime | 操作日時 |
| SourceServer | string | ソースサーバー名 |
| DestinationServer | string | 宛先サーバー名 |
| Name | string | セッション名 |
| Type | string | オブジェクトタイプ（Extended Event） |
| Status | string | 状態（Successful/Skipped/Failed） |
| Notes | string | 備考 |

## イベント仕様

### 1-セッション取得（Get-DbaXESession）

1. Connect-DbaInstance（MinimumVersion 11、AzureUnsupported）
2. SqlStoreConnectionオブジェクト作成
3. XEStoreオブジェクト作成
4. XEStore.Sessionsからセッション一覧取得
5. Sessionパラメータでフィルタリング
6. 各セッションにNotePropertyを追加
7. Select-DefaultViewで出力プロパティ選択

### 2-セッション作成（New-DbaXESession）

1. Connect-DbaInstance（MinimumVersion 11）
2. SqlStoreConnectionオブジェクト作成
3. XEStoreオブジェクト作成
4. XEStore.CreateSession()でセッション作成

### 3-セッション開始（Start-DbaXESession）

1. Get-DbaXESessionでセッション取得
2. AllSessionsの場合はシステムセッションを除外
3. IsRunningがfalseの場合のみSession.Start()実行
4. StartAtが指定されている場合はSQL Agentジョブを作成
5. StopAtが指定されている場合は停止用SQL Agentジョブを作成

### 4-セッション停止（Stop-DbaXESession）

1. Get-DbaXESessionでセッション取得
2. AllSessionsの場合はシステムセッションを除外
3. IsRunningがtrueの場合のみSession.Stop()実行

### 5-セッション削除（Remove-DbaXESession）

1. Get-DbaXESessionでセッション取得
2. AllSessionsの場合はシステムセッションを除外
3. Session.Drop()で削除
4. 結果をPSCustomObjectで出力

### 6-セッションコピー（Copy-DbaXESession）

1. ソースサーバーに接続しXEStore取得
2. システムセッション（AlwaysOn_health, system_health）を除外
3. XeSession/ExcludeXeSessionでフィルタリング
4. 宛先サーバーに接続
5. 既存セッションチェック（Force時は削除）
6. Session.ScriptCreate()でT-SQL取得
7. 宛先サーバーでT-SQL実行
8. ソースでRunning状態なら宛先でも開始

### 7-テンプレートインポート（Import-DbaXESessionTemplate）

1. Connect-DbaInstance（MinimumVersion 11）
2. XEStoreオブジェクト作成
3. テンプレートXMLファイルを読み込み
4. TargetFilePath指定時はパス置換
5. バージョン互換性チェック
6. 既存セッションチェック
7. XEStore.CreateSessionFromTemplate()でセッション作成
8. Session.Create()で確定
9. StartUpState="On"の場合は開始

### 8-セッションエクスポート（Export-DbaXESession）

1. Get-DbaXESessionでセッション取得
2. Session.ScriptCreate().GetScript()でT-SQL取得
3. ファイル出力またはPassthru出力

## データベース更新仕様

### 操作別データベース影響一覧

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| New-DbaXESession | sys.server_event_sessions | INSERT | セッション作成 |
| Start-DbaXESession | sys.dm_xe_sessions | - | セッション開始（DMV反映） |
| Stop-DbaXESession | sys.dm_xe_sessions | - | セッション停止（DMV反映） |
| Remove-DbaXESession | sys.server_event_sessions | DELETE | セッション削除 |
| Copy-DbaXESession | sys.server_event_sessions | INSERT | 宛先にセッション作成 |
| Import-DbaXESessionTemplate | sys.server_event_sessions | INSERT | セッション作成 |

### Start-DbaXESession スケジュール実行時

| 操作 | 対象テーブル | 操作種別 | 概要 |
|-----|-------------|---------|------|
| スケジュール作成 | msdb.dbo.sysjobs | INSERT | SQL Agentジョブ作成 |
| スケジュール作成 | msdb.dbo.sysjobsteps | INSERT | T-SQLステップ作成 |
| スケジュール作成 | msdb.dbo.sysjobschedules | INSERT | スケジュール作成 |

## メッセージ仕様

| メッセージID | 種別 | メッセージ内容 | 発生条件 |
|-------------|------|---------------|---------||
| MSG001 | エラー | Failure | 接続エラー時 |
| MSG002 | 警告 | {session} on {instance} is already running. | 既に実行中のセッション開始時 |
| MSG003 | 警告 | {session} on {instance} is already stopped | 既に停止中のセッション停止時 |
| MSG004 | エラー | Could not start XEvent Session on {instance}. | 開始失敗時 |
| MSG005 | エラー | Could not stop XEvent Session on {instance} | 停止失敗時 |
| MSG006 | エラー | Could not remove XEvent Session on {instance} | 削除失敗時 |
| MSG007 | 情報 | Extended Event Session '{name}' was skipped because it already exists on {dest}. | コピー時既存セッション |
| MSG008 | 情報 | Use -Force to drop and recreate. | 上書き案内 |
| MSG009 | エラー | {Name} already exists on {instance} | インポート時既存セッション |
| MSG010 | エラー | {Name} is not supported in SQL Server {version} | バージョン非互換 |
| MSG011 | エラー | Invalid template ({path} does not exist). | テンプレート未存在 |
| MSG012 | エラー | {file} is not a valid XESession template document. | 不正なXMLファイル |
| MSG013 | エラー | You must specify Path or Template. | パラメータ不足 |

## 例外処理

| 例外条件 | 処理内容 |
|---------|---------||
| 接続エラー | Stop-Functionでエラーメッセージを表示し、次のインスタンスに継続 |
| セッション開始失敗 | Stop-Functionでエラーを表示し、次のセッションに継続 |
| セッション停止失敗 | Stop-Functionでエラーを表示し、次のセッションに継続 |
| セッション削除失敗 | Stop-Functionでエラーを表示し、次のセッションに継続 |
| 既存セッション（コピー時） | ForceなしならSkipped、ForceありならDrop後再作成 |
| テンプレート不正 | Stop-Functionでエラーを表示し、次のテンプレートに継続 |
| バージョン非互換 | Stop-Functionでエラーを表示し、次のテンプレートに継続 |

## 備考

- SQL Server 2012以降が必要（MinimumVersion 11）
- Azure SQL Databaseは非サポート（Get-DbaXESessionのみ確認）
- システムセッション（AlwaysOn_health, system_health, telemetry_xevents）はAllSessions操作時に保護される
- Start-DbaXESessionのStartAt/StopAtはSQL Agentジョブを使用するため、SQL Agentが有効である必要がある
- スケジュールジョブはDeleteLevel=Alwaysで自動削除される
- Copy-DbaXESessionはソースでRunning状態なら宛先でも自動開始される
- Import-DbaXESessionTemplateはdbatools組み込みテンプレートと独自XMLファイルの両方をサポート
- ターゲットファイルパスは自動的にUNCパスに変換される（RemoteTargetFile）

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

出力はMicrosoft.SqlServer.Management.XEvent.Sessionオブジェクト（拡張済み）である。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | Get-DbaXESession.ps1 | `public/Get-DbaXESession.ps1` | 出力オブジェクトの構造（39-72行目）を確認 |
| 1-2 | Remove-DbaXESession.ps1 | `public/Remove-DbaXESession.ps1` | Remove時の出力構造（45-56行目）を確認 |
| 1-3 | Copy-DbaXESession.ps1 | `public/Copy-DbaXESession.ps1` | Copy時の出力構造（52-65行目）を確認 |

**読解のコツ**: Get-DbaXESessionではAdd-MemberでNotePropertyを追加している（134-143行目）。Select-DefaultViewで表示プロパティを制御している。

#### Step 2: エントリーポイントを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | Get-DbaXESession.ps1 | `public/Get-DbaXESession.ps1` | param()ブロック（90-97行目）で入力パラメータを確認 |
| 2-2 | New-DbaXESession.ps1 | `public/New-DbaXESession.ps1` | param()ブロック（60-67行目）で入力パラメータを確認 |

**主要処理フロー（Get-DbaXESession）**:
1. **101-108行目**: Connect-DbaInstance、SqlStoreConnection、XEStore作成
2. **111-114行目**: XEStore.sessionsからセッション取得とフィルタリング
3. **117-144行目**: 各セッションの処理とNoteProperty追加

#### Step 3: セッション操作処理を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | Start-DbaXESession.ps1 | `public/Start-DbaXESession.ps1` | Start()メソッド呼び出し（150-164行目） |
| 3-2 | Stop-DbaXESession.ps1 | `public/Stop-DbaXESession.ps1` | Stop()メソッド呼び出し（123-140行目） |
| 3-3 | Remove-DbaXESession.ps1 | `public/Remove-DbaXESession.ps1` | Drop()メソッド呼び出し（117-136行目） |

**スケジュール実行の仕組み（Start-DbaXESession）**:
- **166-196行目**: New-Job関数でSQL Agentジョブを作成
- **185行目**: New-DbaAgentScheduleでスケジュール作成
- **188行目**: New-DbaAgentJobでジョブ作成（DeleteLevel=Always）
- **191-193行目**: ALTER EVENT SESSION T-SQLでステップ作成

#### Step 4: コピー処理を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 4-1 | Copy-DbaXESession.ps1 | `public/Copy-DbaXESession.ps1` | セッションスクリプト生成（193行目） |

**主要処理フロー**:
- **126行目**: システムセッションを除外
- **162-172行目**: 既存セッションチェック（Force=false時はSkip）
- **174-188行目**: Force=true時の既存セッション削除
- **193行目**: ScriptCreate().GetScript()でT-SQL生成
- **197行目**: destServer.Query()でT-SQL実行
- **199-202行目**: ソースがRunningなら宛先も開始

#### Step 5: テンプレートインポートを理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 5-1 | Import-DbaXESessionTemplate.ps1 | `public/Import-DbaXESessionTemplate.ps1` | テンプレート読み込み（136-137行目、160-167行目） |

**主要処理フロー**:
- **136-137行目**: メタデータXML読み込み
- **160-167行目**: テンプレートパス解決
- **230-239行目**: バージョン互換性チェック
- **247行目**: CreateSessionFromTemplate()でセッション作成
- **252-258行目**: StartUpState=On時の自動開始設定

### プログラム呼び出し階層図

```
Get-DbaXESession
    │
    ├─ Connect-DbaInstance (MinimumVersion 11, AzureUnsupported)
    │      └─ SMOサーバーオブジェクト取得
    │
    ├─ SqlStoreConnection
    │      └─ SqlConnectionObjectからSfcストア接続作成
    │
    ├─ XEStore
    │      └─ Extended Eventsストア取得
    │
    ├─ XEStore.Sessions
    │      └─ セッション一覧取得
    │
    ├─ Add-Member (NoteProperty追加)
    │      └─ ComputerName, Status, TargetFile等
    │
    └─ Select-DefaultView
           └─ 表示プロパティ選択

Start-DbaXESession
    │
    ├─ Get-DbaXESession
    │      └─ セッション取得
    │
    ├─ Session.Start()
    │      └─ セッション開始
    │
    └─ New-Job (StartAt/StopAt指定時)
           ├─ New-DbaAgentSchedule
           ├─ New-DbaAgentJob (DeleteLevel=Always)
           └─ New-DbaAgentJobStep (ALTER EVENT SESSION)

Copy-DbaXESession
    │
    ├─ Connect-DbaInstance (Source)
    │
    ├─ XEStore (Source)
    │      └─ ソースセッション取得
    │
    ├─ Connect-DbaInstance (Destination)
    │
    ├─ Session.ScriptCreate().GetScript()
    │      └─ T-SQL生成
    │
    ├─ destServer.Query()
    │      └─ 宛先でT-SQL実行
    │
    └─ Session.Start() (IsRunning時)
           └─ 宛先でセッション開始

Import-DbaXESessionTemplate
    │
    ├─ Import-Clixml (xetemplates-metadata.xml)
    │      └─ メタデータ読み込み
    │
    ├─ Connect-DbaInstance (MinimumVersion 11)
    │
    ├─ XEStore
    │
    ├─ XEStore.CreateSessionFromTemplate()
    │      └─ テンプレートからセッションオブジェクト作成
    │
    ├─ Session.Create()
    │      └─ セッション確定
    │
    └─ Start-DbaXESession (StartUpState=On時)
           └─ セッション開始
```

### データフロー図

```
[入力]                        [処理]                              [出力]

SqlInstance ───────▶ Connect-DbaInstance ───────────▶ SMO Server
                              │
                              ▼
                     SqlStoreConnection
                              │
                              ▼
                          XEStore
                              │
                              ▼
                     XEStore.Sessions ──────────────▶ Session Collection
                              │
         ┌────────────────────┼────────────────────┐
         │                    │                    │
         ▼                    ▼                    ▼
    Get (Read)           Start/Stop           Remove (Delete)
         │                    │                    │
         │           Session.Start()        Session.Drop()
         │           Session.Stop()              │
         ▼                    │                    ▼
   Add-Member                 │              PSCustomObject
   (NoteProperty)             │              (Status=Removed)
         │                    │
         ▼                    ▼
   XEvent.Session ◀────────────┘
   (Extended)

[コピー/インポート時]

Source ─────────▶ XEStore ─────▶ Session.ScriptCreate()
                                        │
                                        ▼ T-SQL
Template ───────▶ CreateSessionFromTemplate()
                                        │
                                        ▼
Destination ────▶ XEStore ─────▶ Session.Create()
                                        │
                                        ▼
                              Microsoft.SqlServer.Management.XEvent.Session
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| Get-DbaXESession.ps1 | `public/Get-DbaXESession.ps1` | ソース | XEセッション情報取得 |
| New-DbaXESession.ps1 | `public/New-DbaXESession.ps1` | ソース | XEセッション作成 |
| Start-DbaXESession.ps1 | `public/Start-DbaXESession.ps1` | ソース | XEセッション開始 |
| Stop-DbaXESession.ps1 | `public/Stop-DbaXESession.ps1` | ソース | XEセッション停止 |
| Remove-DbaXESession.ps1 | `public/Remove-DbaXESession.ps1` | ソース | XEセッション削除 |
| Copy-DbaXESession.ps1 | `public/Copy-DbaXESession.ps1` | ソース | XEセッションコピー |
| Export-DbaXESession.ps1 | `public/Export-DbaXESession.ps1` | ソース | T-SQLエクスポート |
| Import-DbaXESessionTemplate.ps1 | `public/Import-DbaXESessionTemplate.ps1` | ソース | テンプレートインポート |
| Connect-DbaInstance.ps1 | `public/Connect-DbaInstance.ps1` | 依存 | SQL Server接続 |
| New-DbaAgentJob.ps1 | `public/New-DbaAgentJob.ps1` | 依存 | SQL Agentジョブ作成 |
| New-DbaAgentSchedule.ps1 | `public/New-DbaAgentSchedule.ps1` | 依存 | スケジュール作成 |
| New-DbaAgentJobStep.ps1 | `public/New-DbaAgentJobStep.ps1` | 依存 | ジョブステップ作成 |
