# 画面設計書 217-スクリプティングオプション

## 概要

本ドキュメントは、dbatools PowerShellモジュールにおける「スクリプティングオプション」機能（New-DbaScriptingOption）の画面設計書です。SMO ScriptingOptionsオブジェクトを作成し、Export-DbaScriptなどのスクリプティングコマンドの出力を制御する機能を提供します。

### 本画面の処理概要

**業務上の目的・背景**：SQL ServerオブジェクトをT-SQLスクリプトとして出力する際、インデックス、トリガー、権限、依存関係、バッチセパレータなど、出力に含める内容を細かく制御する必要があります。New-DbaScriptingOptionはMicrosoft.SqlServer.Management.Smo.ScriptingOptionsオブジェクトを作成し、Export-DbaScriptと組み合わせて使用することで、デプロイメントスクリプトの生成を詳細に制御できます。

**画面へのアクセス方法**：PowerShellコンソールから `New-DbaScriptingOption` コマンドを実行します。

**主要な操作・処理内容**：
1. Microsoft.SqlServer.Management.Smo.ScriptingOptionsオブジェクトを新規作成
2. 返されたオブジェクトのプロパティを設定
3. Export-DbaScriptの-ScriptingOptionsObjectパラメータに渡して使用

**画面遷移**：CLIコマンドのため画面遷移はありません。Export-DbaScriptと連携して使用します。

**権限による表示制御**：特別な権限は不要です。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 372 | New-DbaScriptingOption | 主機能 | スクリプティングオプション作成 |
| 218 | Export-DbaScript | 連携機能 | スクリプトエクスポート |

## 画面種別

コマンドライン（CLI）実行画面

## URL/ルーティング

```powershell
# 基本使用
$options = New-DbaScriptingOption
$options.ScriptDrops = $false
$options.WithDependencies = $true
Get-DbaAgentJob -SqlInstance sql2016 | Export-DbaScript -ScriptingOptionObject $options
```

## 入出力項目

### パラメータ

このコマンドにはパラメータがありません。

## 表示項目

### 出力

| プロパティ名 | 型 | 説明 |
|-------------|-----|------|
| ScriptDrops | bool | DROP文を含める |
| WithDependencies | bool | 依存オブジェクトを含める |
| AgentAlertJob | bool | SQL Agentアラートとジョブ情報を含める |
| AgentNotify | bool | SQL Agent通知を含める |
| Indexes | bool | インデックスを含める |
| Triggers | bool | トリガーを含める |
| Permissions | bool | 権限を含める |
| TargetServerVersion | enum | ターゲットSQL Serverバージョン |
| ScriptSchema | bool | スキーマをスクリプト化 |
| IncludeDatabaseContext | bool | データベースコンテキストを含める |
| IncludeHeaders | bool | ヘッダーを含める |
| NoCommandTerminator | bool | コマンド終端子なし |
| ScriptBatchTerminator | bool | バッチ終端子をスクリプト化 |
| AnsiFile | bool | ANSIファイル形式 |
| AppendToFile | bool | ファイルに追記 |
| ToFileOnly | bool | ファイルのみに出力 |
| FileName | string | 出力ファイル名 |

※上記は代表的なプロパティです。完全なプロパティ一覧はMicrosoftドキュメントを参照してください。

## イベント仕様

### 1-コマンド実行時

1. New-Objectで Microsoft.SqlServer.Management.Smo.ScriptingOptions を作成
2. オブジェクトを返す

このコマンドは非常にシンプルで、オブジェクト作成のみを行います。

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

このコマンドはデータベースを更新しません。オブジェクト作成のみを行います。

## メッセージ仕様

このコマンドはメッセージを出力しません。

## 例外処理

このコマンドには特別な例外処理はありません。SMOアセンブリが読み込まれていない場合は.NETの標準例外が発生します。

## 備考

- SMOアセンブリが事前に読み込まれている必要がある（dbatools importで自動読み込み）
- 返されたオブジェクトのプロパティを設定してからExport-DbaScriptに渡す
- 詳細なプロパティ一覧: https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scriptingoptions.aspx

---

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

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

### 推奨読解順序

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

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | New-DbaScriptingOption.ps1 | `public/New-DbaScriptingOption.ps1` | 出力タイプ（行11-26） |

**読解のコツ**: このコマンドは1行で完結しています（行52）。出力されるScriptingOptionsオブジェクトのプロパティを理解することが重要です。

#### Step 2: 使用例を理解する

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | New-DbaScriptingOption.ps1 | `public/New-DbaScriptingOption.ps1` | .EXAMPLEセクション（行39-47） |
| 2-2 | Export-DbaScript.ps1 | `public/Export-DbaScript.ps1` | ScriptingOptionsObjectパラメータの使用（行164-165, 258-261） |

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

```
New-DbaScriptingOption
    |
    +-- New-Object Microsoft.SqlServer.Management.Smo.ScriptingOptions
           +-- ScriptingOptionsオブジェクト作成

Export-DbaScript（使用例）
    |
    +-- ScriptingOptionsObject受け取り
    |      +-- scripter.Options = $ScriptingOptionsObject
    |
    +-- scripter.EnumScript($object)
           +-- オプションに基づいてスクリプト生成
```

### データフロー図

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

(パラメータなし) ─────▶ New-Object ────────────────▶ ScriptingOptions
                              |
                              v
                    ユーザーがプロパティ設定 ──────▶ カスタマイズ済みオブジェクト
                              |
                              v
                    Export-DbaScriptに渡す ────────▶ カスタマイズされたスクリプト出力
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| New-DbaScriptingOption.ps1 | `public/New-DbaScriptingOption.ps1` | ソース | メインコマンド実装 |
| Export-DbaScript.ps1 | `public/Export-DbaScript.ps1` | 連携 | スクリプティングオプション使用先 |

### 主要なScriptingOptionsプロパティ

| プロパティ | 型 | 説明 |
|-----------|-----|------|
| ScriptDrops | bool | オブジェクトのDROP文を生成 |
| WithDependencies | bool | 依存オブジェクトも含めてスクリプト化 |
| AgentAlertJob | bool | SQL Agentアラートとジョブ情報を含める |
| AgentNotify | bool | SQL Agent通知を含める |
| Indexes | bool | インデックスを含める |
| Triggers | bool | トリガーを含める |
| Permissions | bool | 権限を含める |
| TargetServerVersion | Version100等 | ターゲットSQL Serverバージョン |
| ScriptSchema | bool | スキーマ定義をスクリプト化 |
| ScriptData | bool | データを含める（INSERT文生成） |
| IncludeDatabaseContext | bool | USE文を含める |
| IncludeHeaders | bool | オブジェクトヘッダーコメントを含める |
| NoCommandTerminator | bool | セミコロンなし |
| ScriptBatchTerminator | bool | GO文を自動挿入 |
| AnsiFile | bool | ANSIエンコーディング |
| AppendToFile | bool | ファイルに追記モード |
| ToFileOnly | bool | ファイルのみに出力（パイプラインなし） |
| FileName | string | 出力先ファイル名 |
