

# Amazon RDS for SQL Server での SQL Server Integration Services のサポート
<a name="Appendix.SQLServer.Options.SSIS"></a>

Microsoft SQL Server Integration Services (SSIS) は、幅広いデータ移行タスクの実行に使用できるコンポーネントです。SSIS は、データ統合およびワークフローアプリケーションに対応したプラットフォームです。データの抽出、変換、ロード (ETL) に使用されるデータウェアハウジングツールを備えています。このツールを使用して、SQL Server データベースのメンテナンスと多次元キューブデータの更新を自動化することもできます。

SSIS プロジェクトはパッケージに編成されて、XML ベースの .dtsx ファイルとして保存されます。パッケージには、制御フローとデータフローを含めることができます。データフローを使用して、ETL オペレーションを表します。デプロイ後、パッケージは SQL Server の SSISDB データベースに保存されます。SSISDB は、完全復旧モードで動作するオンライントランザクション処理 (OLTP) データベースです。

Amazon RDS for SQL Server は RDS DB インスタンスでの SSIS の直接実行をサポートしています。既存または新規の DB インスタンスで SSIS を有効にできます。SSIS はデータベースエンジンと同じ DB インスタンスにインストールされます。

RDS は、次のバージョンで SQL Server スタンダードエディションおよびエンタープライズエディションの SSIS をサポートします。
+ SQL Server 2022、すべてのバージョン
+ SQL Server 2019、バージョン 15.00.4043.16.v1 以降
+ SQL Server 2017、バージョン 14.00.3223.3.v1 以降
+ SQL Server 2016、バージョン 13.00.5426.0.v1 以降

**Contents**
+ [制限と推奨事項](#SSIS.Limitations)
+ [SSIS の有効化](#SSIS.Enabling)
  + [SSIS のオプショングループの作成](#SSIS.OptionGroup)
  + [オプショングループへの SSIS オプションの追加](#SSIS.Add)
  + [SSIS のパラメータグループの作成](#SSIS.CreateParamGroup)
  + [SSIS のパラメータの変更](#SSIS.ModifyParam)
  + [オプショングループとパラメータグループを DB インスタンスに関連付ける](#SSIS.Apply)
  + [S3 統合を有効にする](#SSIS.EnableS3)
+ [SSISDB の管理権限](SSIS.Permissions.md)
  + [SSIS 用の Windows 認証ユーザーの設定](SSIS.Permissions.md#SSIS.Use.Auth)
+ [SSIS プロジェクトのデプロイ](SSIS.Deploy.md)
+ [デプロイタスクのステータスのモニタリング](SSIS.Monitor.md)
+ [SSIS の使用](SSIS.Use.md)
  + [SSIS プロジェクトのデータベース接続マネージャーの設定](SSIS.Use.md#SSIS.Use.ConnMgrs)
  + [SSIS プロキシの作成](SSIS.Use.md#SSIS.Use.Proxy)
  + [SQL Server エージェントを使用した SSIS パッケージのスケジュール](SSIS.Use.md#SSIS.Use.Schedule)
  + [プロキシからの SSIS アクセスの取り消し](SSIS.Use.md#SSIS.Use.Revoke)
+ [SSIS データベースの無効化と削除](SSIS.DisableDrop.md)
  + [SSIS の無効化](SSIS.DisableDrop.md#SSIS.Disable)
  + [SSISDB データベースの削除](SSIS.DisableDrop.md#SSIS.Drop)

## 制限と推奨事項
<a name="SSIS.Limitations"></a>

RDS for SQL Server で SSIS を実行する場合は、以下の制限と推奨事項が適用されます。
+ また、DB インスタンスには、`clr enabled` パラメータが 1 に設定されたパラメータグループが関連付けられている必要があります。詳細については、「[SSIS のパラメータの変更](#SSIS.ModifyParam)」を参照してください。
**注記**  
SQL Server 2017 または 2019 で `clr enabled` パラメータを有効にしている場合、DB インスタンスで共通言語ランタイム (CLR) を使用できません。詳細については、「[サポート対象外の機能とサポートが制限されている機能](SQLServer.Concepts.General.FeatureNonSupport.md)」を参照してください。
+ 以下の制御フロータスクがサポートされています。
  + Analysis Services DDL 実行タスク
  + Analysis Services 処理タスク
  + 一括挿入タスク
  + データベース整合性チェックタスク
  + データフロータスク
  + データマイニングクエリタスク
  + データプロファイリングタスク
  + パッケージ実行タスク
  + SQL Server エージェントジョブ実行タスク
  + SQL 実行タスク
  + T-SQL ステートメント実行タスク
  + オペレーター通知タスク
  + インデックス再構築タスク
  + インデックス再編成タスク
  + データベース縮小タスク
  + データベース転送タスク
  + ジョブ転送タスク
  + ログイン転送タスク
  + SQL Server オブジェクト転送タスク
  + 統計更新タスク
+ プロジェクトのデプロイのみがサポートされています。
+ SQL Server エージェントを使用した SSIS パッケージの実行がサポートされています。
+ SSIS ログレコードは、ユーザーが作成したデータベースにのみ挿入できます。
+ ファイルの操作には `D:\S3` フォルダのみを使用します。他のディレクトリにあるファイルは削除されます。ファイルの場所について、そのほか以下の詳細にも注意してください。
  + SSIS プロジェクトの入力ファイルと出力ファイルは `D:\S3` フォルダに配置します。
  + データフロータスクの場合、`BLOBTempStoragePath` と `BufferTempStoragePath` の場所を `D:\S3` フォルダ内のファイルに変更します。ファイルパスは `D:\S3\` で始まる必要があります。
  + ファイル接続に使用されるすべてのパラメータ、可変、表現が `D:\S3` フォルダを指していることを確認します。
  + マルチ AZ インスタンスでは、SSIS によって `D:\S3` フォルダに作成されたファイルは、フェイルオーバー後に削除されます。詳細については、「[S3 統合のマルチ AZ の制限](User.SQLServer.Options.S3-integration.md#S3-MAZ)」を参照してください。
  + SSIS によって `D:\S3` フォルダに作成されたファイルは、耐久性を高めるために、Amazon S3 バケットにアップロードします。
+ 列のインポートと列のエクスポートの変換、およびデータフロータスクのスクリプトコンポーネントはサポートされていません。
+ SSIS パッケージの実行時にダンプを有効にしたり、SSIS パッケージにデータタップを追加したりすることはできません。
+ SSIS スケールアウト機能はサポートされていません。
+ プロジェクトを直接デプロイすることはできません。この機能を実行するための RDS ストアドプロシージャが提供されています。詳細については、「[SSIS プロジェクトのデプロイ](SSIS.Deploy.md)」を参照してください。
+ RDS にデプロイする SSIS プロジェクト (.ispac) ファイルは `DoNotSavePasswords` 保護モードで構築します。
+ SSIS は、リードレプリカを使用する Always On インスタンスではサポートされていません。
+ `SSIS` オプションに関連付けられている SSISDB データベースをバックアップすることはできません。
+ SSIS の他のインスタンスからの SSISDB データベースのインポートと復元はサポートされていません。
+ 他の SQL Server DB インスタンスまたは Oracle データソースに接続できます。RDS for SQL Server 上の SSIS では、MySQL または PostgreSQL などの他のデータベースエンジンへの接続はサポートされていません。Oracle データソースへの接続に関する詳細については、[Oracle OLEDB とリンクされたサーバー](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md) を参照してください。
+ SSIS は、オンプレミスドメインへの送信の信頼を持つドメイン参加インスタンスをサポートしていません。送信の信頼を使用する場合は、ローカル AWS ドメインのアカウントから SSIS ジョブを実行します。
+ ファイルシステムベースのパッケージの実行はサポートされていません。

## SSIS の有効化
<a name="SSIS.Enabling"></a>

SSIS を有効にするには、DB インスタンスに SSIS オプションを追加します。以下のプロセスを使用します。

1. 新しいオプショングループを作成するか、既存のオプショングループを選択します。

1. オプショングループに [`SSIS`] オプションを追加します。

1. 新しいパラメータグループを作成するか、既存のパラメータグループを選択します。

1. パラメータグループを変更して、`clr enabled` パラメータを 1 に設定します。

1. オプショングループとパラメータグループを DB インスタンスに関連付けます。

1. Amazon S3 統合を有効にする

**注記**  
DB インスタンスに既に SSISDB という名前のデータベースがある場合や、SSIS ログインが予約されている場合、そのインスタンスで SSIS を有効にすることはできません。

### SSIS のオプショングループの作成
<a name="SSIS.OptionGroup"></a>

SSIS を使用するには、使用する DB インスタンスの SQL Server のエディションとバージョンに対応するオプショングループを作成または変更します。そのためには、AWS マネジメントコンソール または AWS CLI を使用します。

#### コンソール
<a name="SSIS.OptionGroup.Console"></a>

次の手順では、SQL Server Standard Edition 2016 のオプショングループを作成します。

**オプショングループを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**オプショングループ**] を選択します。

1. **[Create group]** (グループの作成) を選択します。

1. [**Create subnet group**(オプショングループの作成)] ウィンドウで以下を行います。

   1. [**名前**] に、AWS アカウント内で一意のオプショングループ名 (**ssis-se-2016** など) を入力します。名前には、英字、数字、ハイフンのみを使用できます。

   1. [**説明**] に、オプショングループの簡単な説明 (**SSIS option group for SQL Server SE 2016** など) を入力します。この説明は表示用に使用されます。

   1. [**エンジン**] で [**sqlserver-se**] を選択します。

   1. [**メジャーエンジンのバージョン**] で、[**13.00**] を選択します。

1. **[作成]** を選択します。

#### CLI
<a name="SSIS.OptionGroup.CLI"></a>

次の手順では、SQL Server Standard Edition 2016 のオプショングループを作成します。

**オプショングループを作成するには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds create-option-group \
      --option-group-name ssis-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

  Windows の場合:

  ```
  aws rds create-option-group ^
      --option-group-name ssis-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

### オプショングループへの SSIS オプションの追加
<a name="SSIS.Add"></a>

次に、AWS マネジメントコンソール または AWS CLI を使用して `SSIS` オプションをオプショングループに追加します。

#### コンソール
<a name="SSIS.Add.Console"></a>

**SSIS オプションを追加するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**オプショングループ**] を選択します。

1. 作成したオプショングループ (この例では **ssis-se-2016**) を選択します。

1. [**オプションの追加**] を選択します。

1. [**オプションの詳細**] で、[**オプション名**] として [**SSRS**] を選択します。

1. [**スケジュール**] で、オプションをすぐに追加するか、次のメンテナンスウィンドウで追加するかを選択します。

1. **[オプションを追加]** を選択します。

#### CLI
<a name="SSIS.Add.CLI"></a>

**SSIS オプションを追加するには**
+ オプショングループに [`SSIS`] オプションを追加します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssis-se-2016 \
      --options OptionName=SSIS \
      --apply-immediately
  ```

  Windows の場合:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssis-se-2016 ^
      --options OptionName=SSIS ^
      --apply-immediately
  ```

### SSIS のパラメータグループの作成
<a name="SSIS.CreateParamGroup"></a>

SSIS で使用する DB インスタンスの SQL Server のエディションとバージョンに対応する `clr enabled` パラメータのパラメータグループを作成または変更します。

#### コンソール
<a name="SSIS.CreateParamGroup.Console"></a>

以下の例では、SQL Server Standard Edition 2016 のパラメータグループを作成します。

**パラメータグループを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、**[パラメータグループ]** を選択します。

1. [**Create parameter group**] を選択します。

1. [**パラメータグループの作成**] ペインで、次の操作を行います。

   1. [**パラメータグループファミリー**] で、[**sqlserver-se-13.0**] を選択します。

   1. [**グループ名**] に、パラメータグループの識別子 (**ssis-sqlserver-se-13** など) を入力します。

   1. [**説明**] に「**clr enabled parameter group**」と入力します。

1. **[作成]** を選択します。

#### CLI
<a name="SSIS.CreateParamGroup.CLI"></a>

以下の例では、SQL Server Standard Edition 2016 のパラメータグループを作成します。

**パラメータグループを作成するには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "clr enabled parameter group"
  ```

  Windows の場合:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "clr enabled parameter group"
  ```

### SSIS のパラメータの変更
<a name="SSIS.ModifyParam"></a>

DB インスタンスの SQL Server のエディションとバージョンに対応するパラメータグループの `clr enabled` パラメータを変更します。SSIS の場合、`clr enabled` パラメータを 1 に設定します。

#### コンソール
<a name="SSIS.ModifyParam.Console"></a>

以下の手順では、SQL Server Standard Edition 2016 用に作成したパラメータグループを変更します。

**パラメータグループを変更するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**パラメータグループ**] を選択します。

1. [**ssis-sqlserver-se-13**] などのパラメータグループを選択します。

1. [**パラメータ**] で、パラメータのリストを **clr** でフィルタ処理します。

1. [**clr enabled (clr 有効化)**] を選択します。

1. [**Edit parameters**] を選択します。

1. [**Values (値)**] から [**1**] を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

#### CLI
<a name="SSIS.ModifyParam.CLI"></a>

以下の手順では、SQL Server Standard Edition 2016 用に作成したパラメータグループを変更します。

**パラメータグループを変更するには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

  Windows の場合:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

### オプショングループとパラメータグループを DB インスタンスに関連付ける
<a name="SSIS.Apply"></a>

SSIS オプショングループおよびパラメータグループを DB インスタンスに関連付けるには、AWS マネジメントコンソール または AWS CLI を使用します。

**注記**  
既存のインスタンスを使用する場合は、このインスタンスに Active Directory ドメインと AWS Identity and Access Management (IAM) ロールが既に関連付けられている必要があります。新しいインスタンスを作成する場合は、既存の Active Directory ドメインと IAM ロールを指定します。詳細については、「[RDS for SQL Server による Active Directory の操作](User.SQLServer.ActiveDirectoryWindowsAuth.md)」を参照してください。

#### コンソール
<a name="SSIS.Apply.Console"></a>

SSIS の有効化を完了するには、SSIS オプショングループおよびパラメータグループを新規または既存の DB インスタンスに関連付けます。
+ 新しい DB インスタンスの場合は、インスタンスを起動するときにそれらを関連付けます。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。
+ 既存の DB インスタンスの場合は、インスタンスを変更することでそれらを関連付けます。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

#### CLI
<a name="SSIS.Apply.CLI"></a>

SSIS オプショングループおよびパラメータグループを新規または既存の DB インスタンスに関連付けることができます。

**SSIS オプショングループおよびパラメータグループを使用してインスタンスを作成するには**
+ オプショングループの作成時に使用したものと同じ DB エンジンのタイプとメジャーバージョンを指定します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssisinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

  Windows の場合:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssisinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

**インスタンスを変更し、SSIS オプショングループおよびパラメータグループを関連付けるには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssisinstance \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --apply-immediately
  ```

  Windows の場合:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssisinstance ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --apply-immediately
  ```

### S3 統合を有効にする
<a name="SSIS.EnableS3"></a>

SSIS プロジェクト (.ispac) ファイルをデプロイのためにホストにダウンロードするには、S3 ファイル統合を使用します。詳細については、「[Amazon RDS for SQL Server DB インスタンスと Amazon S3 の統合](User.SQLServer.Options.S3-integration.md)」を参照してください。

# SSISDB の管理権限
<a name="SSIS.Permissions"></a>

SSIS オプションを使用してインスタンスを作成または変更すると、その結果、SSISDB データベースのマスターユーザーには、ssis\$1admin および ssis\$1logリーダー ロールが付与されます。マスターユーザーには SSISDB に対する以下の権限があります。
+ ssis\$1admin ロールの変更
+ ssis\$1logリーダー ロールの変更
+ 任意のユーザーの変更

マスターユーザーは SQL 認証ユーザーであるため、マスターユーザーを使用して SSIS パッケージを実行することはできません。マスターユーザーはこれらの権限を使用して新しい SSISDB ユーザーを作成し、それらのユーザーを ssis\$1admin および ssis\$1logリーダー ロールに追加できます。これは、ドメインユーザーに SSIS を使用するアクセス許可を付与するのに役立ちます。

## SSIS 用の Windows 認証ユーザーの設定
<a name="SSIS.Use.Auth"></a>

マスターユーザーは、以下のコード例を使用して、SSISDB に Windows 認証ログインを設定し、必要な手順に対するアクセス許可を付与できます。これにより、ドメインユーザーに SSIS パッケージのデプロイと実行、S3 ファイル転送手順の使用、認証情報の作成、および SQL Server エージェントプロキシの操作を行うアクセス許可が付与されます。詳細については、Microsoft ドキュメントの「[Credentials (Database Engine)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15)」および「[Create a SQL Server Agent Proxy](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15)」を参照してください。

**注記**  
必要に応じて、Windows 認証ユーザーに以下のアクセス許可の一部またはすべてを付与できます。

**Example**  

```
-- Create a server-level SQL login for the domain user, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO						
						
-- Create a database-level account for the domain user, if it doesn't already exist						
USE [SSISDB]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Add SSIS role membership to the domain user
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO

-- Add MSDB role membership to the domain user
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Grant MSDB stored procedure privileges to the domain user
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name]  with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] WITH GRANT OPTION


-- Add the SQLAgentUserRole privilege to the domain user
USE [msdb]
GO
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO

-- Grant the ALTER ANY CREDENTIAL privilege to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO
```

# SSIS プロジェクトのデプロイ
<a name="SSIS.Deploy"></a>

RDS では、SQL Server Management Studio (SSMS) または SSIS の手順を使用して SSIS プロジェクトを直接デプロイすることはできません。Amazon S3 からプロジェクトファイルをダウンロードしてデプロイするには、RDS ストアドプロシージャを使用します。

ストアドプロシージャを実行するには、ストアドプロシージャの実行アクセス許可を付与した任意のユーザーとしてログインします。詳細については、「[SSIS 用の Windows 認証ユーザーの設定](SSIS.Permissions.md#SSIS.Use.Auth)」を参照してください。

**SSIS プロジェクトをデプロイするには**

1. プロジェクト (.ispac) ファイルをダウンロードします。

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/ssisproject.ispac',
   @rds_file_path='D:\S3\ssisproject.ispac',
   @overwrite_file=1;
   ```

1. 以下のことを確認してから、デプロイタスクを送信します。
   + フォルダが SSIS カタログに存在する。
   + プロジェクト名が、SSIS プロジェクトの開発中に使用したプロジェクト名と一致する。

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSIS_DEPLOY_PROJECT',
   @folder_name='DEMO',
   @project_name='ssisproject',
   @file_path='D:\S3\ssisproject.ispac';
   ```

# デプロイタスクのステータスのモニタリング
<a name="SSIS.Monitor"></a>

デプロイタスクのステータスを追跡するには、`rds_fn_task_status` 関数を呼び出します。2 つのパラメータを使用します。1 つめのパラメータは、SSIS に適用されないため、常に `NULL` を設定してください。2 つめのパラメータは、タスク ID を受け入れます。

全タスクのリストを見るには、以下の例にあるように、初期のパラメータを `NULL` に設定し、2 つめのパラメータを `0` に設定します。

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

特定のタスクを受け取るには、以下の例にあるように、初期のパラメータを `NULL` に設定し、2 つめのパラメータをタスク ID に設定します。

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

`rds_fn_task_status` 機能は次の情報を返します。


| 出力パラメータ | 説明 | 
| --- | --- | 
| `task_id` | タスクの ID。 | 
| `task_type` | `SSIS_DEPLOY_PROJECT` | 
| `database_name` | SSIS タスクには該当しません。 | 
| `% complete` | タスクの進行状況の割合。 | 
| `duration (mins)` | タスクにかかった時間 (分単位)。 | 
| `lifecycle` |  タスクのステータス。有効な状態には以下のものがあります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/SSIS.Monitor.html)  | 
| `task_info` | タスクに関する追加情報。処理中にエラーが発生した場合、この列にエラーに関する情報が含まれます。 | 
| `last_updated` | タスクのステータスが最後に更新された日時。 | 
| `created_at` | タスクが作成された日時。 | 
| `S3_object_arn` |  SSIS タスクには該当しません。  | 
| `overwrite_S3_backup_file` | SSIS タスクには該当しません。 | 
| `KMS_master_key_arn` |  SSIS タスクには該当しません。  | 
| `filepath` |  SSIS タスクには該当しません。  | 
| `overwrite_file` |  SSIS タスクには該当しません。  | 
| `task_metadata` | SSIS タスクに関連付けられたメタデータ。 | 

# SSIS の使用
<a name="SSIS.Use"></a>

SSIS プロジェクトを SSIS カタログにデプロイした後、SSMS から直接パッケージを実行するか、SQL Server エージェントを使用してパッケージをスケジュールできます。SSIS パッケージを実行するには、Windows 認証のログインを使用する必要があります。詳細については、「[SSIS 用の Windows 認証ユーザーの設定](SSIS.Permissions.md#SSIS.Use.Auth)」を参照してください。

**Topics**
+ [SSIS プロジェクトのデータベース接続マネージャーの設定](#SSIS.Use.ConnMgrs)
+ [SSIS プロキシの作成](#SSIS.Use.Proxy)
+ [SQL Server エージェントを使用した SSIS パッケージのスケジュール](#SSIS.Use.Schedule)
+ [プロキシからの SSIS アクセスの取り消し](#SSIS.Use.Revoke)

## SSIS プロジェクトのデータベース接続マネージャーの設定
<a name="SSIS.Use.ConnMgrs"></a>

接続マネージャーを使用する場合、以下のタイプの認証を使用できます。
+ AWS Managed Active Directory を使用したローカルデータベース接続の場合、SQL 認証または Windows 認証を使用できます。Windows 認証の場合、接続文字列のサーバー名として `DB_instance_name.fully_qualified_domain_name` を使用します。

  例えば、`myssisinstance.corp-ad.example.com` を使用します。ここで、`myssisinstance` は DB インスタンス名、`corp-ad.example.com` は完全修飾ドメイン名です。
+ リモート接続の場合は、常に SQL 認証を使用します。
+ セルフマネージド Active Directory を使用したローカルデータベース接続の場合、SQL 認証または Windows 認証を使用できます。Windows 認証の場合、接続文字列のサーバー名として `.` または `LocalHost` を使用します。

## SSIS プロキシの作成
<a name="SSIS.Use.Proxy"></a>

SQL Server エージェントを使用して SSIS パッケージをスケジュールできるようにするには、SSIS 認証情報と SSIS プロキシを作成します。これらの手順を Windows 認証ユーザーとして実行します。

**SSIS 認証情報を作成するには**
+ プロキシの認証情報を作成します。そのためには、SSMS または以下の SQL ステートメントを使用できます。

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**注記**  
`IDENTITY` はドメイン認証ログインであることが必要です。`mysecret` をドメイン認証ログインのパスワードに置き換えます。  
SSISDB プライマリホストが変更されるたびに、SSIS プロキシ認証情報を変更して、新しいホストがそれらのホストにアクセスできるようにします。

**SSIS プロキシを作成するには**

1. 以下の SQL ステートメントを使用して、プロキシを作成します。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N''
   GO
   ```

1. 以下の SQL ステートメントを使用して、他のユーザーにプロキシへのアクセスを許可します。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. 以下の SQL ステートメントを使用して、SSIS サブシステムにプロキシへのアクセスを許可します。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

**プロキシとそのプロキシに対する許可を表示するには**

1. 以下の SQL ステートメントを使用して、プロキシの被付与者を表示します。

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. 以下の SQL ステートメントを使用して、サブシステムの許可を表示します。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## SQL Server エージェントを使用した SSIS パッケージのスケジュール
<a name="SSIS.Use.Schedule"></a>

認証情報とプロキシを作成し、SSIS にプロキシへのアクセスを許可したら、SQL Server エージェントジョブを作成して SSIS パッケージをスケジュールできます。

**SSIS パッケージをスケジュールするには**
+ SSMS または T-SQL を使用して、SQL Server エージェントジョブを作成できます。以下の例では T-SQL を使用しています。

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'MYSSISJob',
  @enabled=1,
  @notify_level_eventlog=0,
  @notify_level_email=2,
  @notify_level_page=2,
  @delete_level=0,
  @category_name=N'[Uncategorized (Local)]',
  @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver @job_name=N'MYSSISJob',@server_name=N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'MYSSISJob',@step_name=N'ExecuteSSISPackage',
  @step_id=1,
  @cmdexec_success_code=0,
  @on_success_action=1,
  @on_fail_action=2,
  @retry_attempts=0,
  @retry_interval=0,
  @os_run_priority=0,
  @subsystem=N'SSIS',
  @command=N'/ISSERVER "\"\SSISDB\MySSISFolder\MySSISProject\MySSISPackage.dtsx\"" /SERVER "\"my-rds-ssis-instance.corp-ad.company.com/\"" 
  /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E',
  @database_name=N'master',
  @flags=0,
  @proxy_name=N'SSIS_Proxy'
  GO
  ```

## プロキシからの SSIS アクセスの取り消し
<a name="SSIS.Use.Revoke"></a>

以下のストアドプロシージャを使用して、SSIS サブシステムへのアクセスを取り消し、SSIS プロキシを削除できます。

**アクセスを取り消してプロキシを削除するには**

1. サブシステムのアクセスを取り消します。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

1. プロキシに対する許可を取り消します。

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. プロキシを削除します。

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy'
   GO
   ```

# SSIS データベースの無効化と削除
<a name="SSIS.DisableDrop"></a>

SSIS データベースを無効化または削除するには、次の手順を実行します。

**Topics**
+ [SSIS の無効化](#SSIS.Disable)
+ [SSISDB データベースの削除](#SSIS.Drop)

## SSIS の無効化
<a name="SSIS.Disable"></a>

SSIS を無効にするには、オプショングループから `SSIS` オプションを削除します。

**重要**  
SSIS オプションを削除しても SSISDB データベースは削除されないため、SSIS プロジェクトを失うことなくこのオプションを安全に削除できます。  
削除後に `SSIS` オプションを再度有効にして、前に SSIS カタログにデプロイされていた SSIS プロジェクトを再利用できます。

### コンソール
<a name="SSIS.Disable.Console"></a>

以下の手順では、`SSIS` オプションを削除します。

**SSIS オプションをオプショングループから削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**オプショングループ**] を選択します。

1. `SSIS` オプションが含まれているオプショングループ (前の例では `ssis-se-2016`) を選択します。

1. [**オプションの削除**] を選択します。

1. [**オプションの削除**] で、[**削除するオプション**] として [**SSIS**] を選択します。

1. [**すぐに適用**] で、オプションをすぐに削除する場合は [**はい**] を選択し、次のメンテナンスウィンドウで削除する場合は [**いいえ**] を選択します。

1. [**削除**] を選択します。

### CLI
<a name="SSIS.Disable.CLI"></a>

以下の手順では、`SSIS` オプションを削除します。

**SSIS オプションをオプショングループから削除するには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  Linux、macOS、Unix の場合:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssis-se-2016 \
      --options SSIS \
      --apply-immediately
  ```

  Windows の場合:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssis-se-2016 ^
      --options SSIS ^
      --apply-immediately
  ```

## SSISDB データベースの削除
<a name="SSIS.Drop"></a>

SSIS オプションを削除しても、SSISDB データベースは削除されません。SSISDB データベースを削除するには、SSIS オプションを削除した後、`rds_drop_ssis_database` ストアドプロシージャを使用します。

**SSIS データベースを削除するには**
+ 次のストアドプロシージャを使用します。

  ```
  USE [msdb]
  GO
  EXEC dbo.rds_drop_ssis_database
  GO
  ```

SSISDB データベースを削除した後、SSIS オプションを再度有効にすると、新しい SSISDB カタログが取得されます。