# tMSSqlBulkExec

Microsoft SQL Serverデータベースに挿入操作を実行する際にパフォーマンスを向上させます。

tMSSqlOutputBulkコンポーネントとtMSSqlBulkExecコンポーネントは、2ステップのプロセスで一緒に使われます。最初のステップでは、出力ファイルが生成されます。2番目のステップでは、データベースをフィードするために使用する挿入オペレーションで、このファイルを使用します。これら2つのステップは、tMSSqlOutputBulkExecコンポーネント内で融合しており、これについては別のセクションで詳しく説明しています。2段階のプロセスを使用する利点は、データベースにロードする前にデータを変換できることです。

## tMSSqlBulkExecの標準プロパティ

これらのプロパティは、標準ジョブのフレームワークで実行されているtMSSqlBulkExecを設定するために使われます。

標準のtMSSqlBulkExecコンポーネントは、データベースファミリーに属しています。

このフレームワーク内のコンポーネントは、すべてのTalend製品で利用できます。

情報メモ注: このコンポーネントは、動的データベースコネクターの特定のバージョンです。データベース設定に関連するプロパティは、データベースタイプの選択に応じて異なります。動的データベースコネクターについては、[DB Genericコンポーネント](https://help.qlik.com/talend/r/ja-JP/8.0/components/db-generic/db-generic-component)をご覧ください。

情報メモ注: ESB用にジョブをOSGIバンドルとしてビルドする場合、SQL Serverコンポーネントで使われるMS SQL Serverドライバーであるjtdsとmssql-jdbcは、ビルドアーティファクトには含まれていません。 Talend Runtimeでアーティファクトを実行する場合は、これらのドライバーを&lt;TalendRuntimePath&gt;/libフォルダーにコピーして手動でデプロイし、 Talend Runtimeを再起動する必要があります。

## 基本設定

| プロパティ | 説明 |
| --- | --- |
| データベース | 目的のデータベースタイプをリストから選択し、[Apply] (適用)をクリックします。 |
| [Property type] (プロパティタイプ) | [Built-in] (組み込み)と[Repository] (リポジトリー)のいずれかです。<br><br><ul> <li> <span>[Built-In] (組み込み)</span>: 一元的に保存されるプロパティデータはありません。</li> <li> <span>[Repository] (リポジトリー)</span>: プロパティが保管されるリポジトリーファイルを選択します。後続フィールドは、取得されたデータを使用して自動的に入力されます。</li> </ul> |
| [JDBC Provider] (JDBCプロバイダー) | 使うJDBCドライバーのプロバイダー、[Microsoft] (マイクロソフト) (デフォルト、推奨)または[Open source JTDS] (オープンソースJTDS)を選択します。<br><br>Microsoftを選択した場合は、SQL Server用Microsoft JDBCドライバーを[\[Microsoftダウンロードセンター\]](https://www.microsoft.com/en-us/download/details.aspx?id=11774)からダウンロードし、ダウンロードしたzipファイルを解凍し、解凍したフォルダーからお使いのJREバージョンに基づいてjarを選択し、jarの名前を*mssql-jdbc.jar*に変更し、手動でインストールする必要があります。jarの選択については、[Microsoftダウンロードセンター](https://www.microsoft.com/en-us/download/details.aspx?id=11774)でシステム要件情報をご覧ください。<br><br>OSGiビルドには、オープンソースのjTDSJDBCドライバーが含まれないことにご注意ください。このコンポーネントが含まれているジョブをOSGiバンドルとしてビルドする必要がある時は、Microsoftの公式JDBCドライバーを使用してください。このドライバーを使用しない場合、このコンポーネントは、 Talend Runtimeに正しくインストールされたjTDSJDBCドライバーを使用するデータソースでのみ機能します。 |
| [Use an existing connection] (既存の接続を使用) | 定義済みの接続の詳細を再利用する場合は、このチェックボックスを選択して、[Component List] (コンポーネントリスト)ドロップダウンリストから、目的の接続コンポーネントを選択します。<br><br>情報メモ注: ジョブに親ジョブと子ジョブが含まれている時は、親ジョブと子ジョブの間の既存の接続を共有したい場合(たとえば、親ジョブで作成した接続を子ジョブと共有するなど)には、次のように実行します。<br><br><ol> <li>親レベルで、共有するデータベース接続を、そのデータベース接続そのものを作成する接続コンポーネントの<span>[Basic settings] (基本設定)</span>ビューに登録します。 </li> <li>子レベルで、登録済みのそのデータベース接続を読み取るために専用の接続コンポーネントを使用します。 </li> </ol><br><br>ジョブレベル全体でデータベース接続を共有する方法の例は、[データベース接続を共有](https://help.qlik.com/talend/r/ja-JP/7.3/studio-user-guide/sharing-database-connection)をご覧ください。 |
| [Host] (ホスト) | 使うデータベースサーバーかAzure Synapse AnalyticsのIPアドレスまたはホスト名を指定します。<br><br>サーバーが存在するマシンでSQL Server Browserサービスが実行中である場合は、このフィールドにホスト名とインスタンス名を{host\_name}\{instance\_name}という形式で指定すれば、TCPダイナミックポートを通じてネームドインスタンスに接続できるようになります。この場合は[Port] (ポート)フィールドを空白のまましておきます。関連情報は、[SQL Server Browser service](https://docs.microsoft.com/ja-jp/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16)をご覧ください。 |
| [Port] (ポート) | 使うデータベースサーバーかAzure Synapse Analyticsのリスニングポート番号を入力します。<br><br>サーバーが存在するマシンでSQL Server Browserサービスが実行中である場合は、[Host] (ホスト)フィールドにホスト名とインスタンス名を入力し、このフィールドを空にしておけば、TCPダイナミックポートを通じてネームドインスタンスに接続できるようになります。関連情報は、[SQL Server Browser service](https://docs.microsoft.com/ja-jp/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16)をご覧ください。 |
| スキーマ | データベーススキーマの名前を入力します。 |
| データベース | データベースの名前を入力します。 |
| [Username] (ユーザー名)と[Password] (パスワード) | 認証データを入力します。<br><br>パスワードを入力するためには、[Password] (パスワード)フィールドの横にある[...]ボタンをクリックし、ポップアップダイアログボックスにパスワードを二重引用符で囲んで入力して[OK]をクリックし、設定を保存します。<br><br>[Additional JDBC Parameters] (追加のJDBCパラメーター)フィールドにintegratedSecurity=trueを追加し、これら2つのフィールドを空にしておけば、Windowsで[Type 2 integrated authentication] (タイプ2のインテグレーション認証)を使用できるようになります。関連情報は、[Building the connection URL](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?redirectedfrom=MSDN)で*Connecting with integrated authentication On Windows*というセクションをご覧ください。 |
| テーブル | 書き込まれるテーブルの名前を入力します。一度に書き込みができるテーブルは1つだけです。挿入オペレーションが成功するには、テーブルが既に存在している必要があります。 |
| [Action on table] (テーブルでのアクション) | 定義済みのテーブルで、次のオペレーションの1つを実行できます。<br><br>[None] (なし): 操作は行われません。<br><br>[Drop and create table] (ドロップしてテーブルを作成): テーブルが削除され、再作成されます。<br><br>[Create table] (テーブルを作成): テーブルが存在しないため、作成されます。<br><br>[Create table if not exists] (テーブルが存在しない場合は作成): テーブルが存在しない場合は作成されます。<br><br>[Drop table if exists and create] (テーブルが存在する場合はドロップして作成): テーブルが既に存在する場合は削除されて再作成されます。<br><br>[Clear table] (テーブルをクリア): テーブルのコンテンツが削除されます。<br><br>[Truncate table] (テーブルを切り詰め): テーブルのコンテンツが削除されます。この操作はロールバックできません。 |
| [Use existing dynamic schema] (既存のダイナミックスキーマを使用) | このオプションを選択すると、tSetDynamicSchemaコンポーネントによって生成されたダイナミックスキーマを使用できます。このオプションではtSetDynamicSchemaコンポーネントが少なくとも1つ必要です。<br><br>[Dynamic schema] (ダイナミックスキーマ)ドロップダウンリストから、目的のダイナミックスキーマを生成するコンポーネントを選択します。 |
| [Schema] (スキーマ)と[Edit schema] (スキーマを編集) | スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語のlineを避けます。<br><br>[Built-in] (組み込み): そのコンポーネントに対してのみスキーマを作成し、ローカルに保管します。<br><br>[Repository] (リポジトリー): スキーマは作成済みで、リポジトリーに保管されています。さまざまなプロジェクトやジョブデザインで再利用できます。<br><br>再利用するスキーマに整数またはファンクションのデフォルト値が指定されている場合は、これらのデフォルト値を引用符で囲まないようにご注意ください。引用符で囲まれている場合は手動で削除します。<br><br>詳細は、[テーブルスキーマを取得](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/retrieving-table-schemas?tocId=_C1~eFOlN~GM_JR2qkBYZg)をご覧ください。<br><br>スキーマを変更するには[Edit schema] (スキーマを編集)をクリックします。現在のスキーマがリポジトリータイプの場合は、3つのオプションを利用できます。<br><br><ul> <li> <p> <span>[View schema] (スキーマを表示)</span>: スキーマのみを表示する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Change to built-in property] (組み込みのプロパティに変更)</span>: ローカルで変更を行うためにスキーマを<span>組み込み</span>に変更する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Update repository connection] (リポジトリー接続をアップデート)</span>: リポジトリーに保存されているスキーマに変更を加え、変更後にそのコンテンツをすべてのジョブにプロパゲートするかどうかを決める場合は、このオプションを選択します。</p> <p>変更を現在のジョブにのみ反映する場合は、変更後、<span>[No] (いいえ)</span>を選択し、<span>[Repository Content] (リポジトリーコンテンツ)</span>ウィンドウで再びこのスキーマのメタデータを選択します。</p> </li> </ul> |
| [Remote File Name] (リモートファイル名) | ロードするファイルの名前を入力します。<br><br>情報メモ注: このファイルは、データベースサーバーと同じマシンにあることも、別のマシンにあることもあります。ファイルがデータベースサーバーと同じマシンにある場合は、このフィールドにファイルへのパスを入力します。ファイルが別のマシンにある場合は、このフィールドにファイルの汎用命名規則(UNC)名(すなわち\\{Servername}\{Sharename}\{Path}\{Filename})を入力します。後者の場合はファイルを読み取る権限が必要となります。関連情報は、[Bulk importing to SQL Server from a remote data file](https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-bulk-data-by-using-bulk-insert-or-openrowset-bulk-sql-server?view=sql-server-ver16#bulk-importing-to-sql-server-from-a-remote-data-file)をご参照ください。 |

## 詳細設定

| プロパティ | 説明 |
| --- | --- |
| アクション | 実行するアクションを選択します。<br><br>[Bulk insert] (バルク挿入) 、[Bulk update] (バルクアップデート)、[Bcp query out] (BCPクエリーアウト): 必要な情報は、選択したアクションによって異なります。 |
| [Additional JDBC parameters] (追加のJDBCパラメーター) | 作成するデータベース接続に追加のJDBCパラメーターを指定します。<br><br>このプロパティは、[Basic settings] (基本設定)で[Use an existing connection] (既存の接続を使用)チェックボックスがオンになっている場合は利用できません。 |
| [Authenticate using Azure Active Directory] (Azure Active Directoryを使って認証) | このオプションを選択すると、接続を確立する時にAzure Active Directory認証を使用できます。関連情報は、[Azure AD Authentication](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication)をご覧ください。<br><br>このオプションは、[Basic settings] (基本設定)ビューの[JDBC Provider] (JDBCプロバイダー)ドロップダウンリストからMicrosoftが選択されている場合のみ利用できます。 |
| [Enable always encrypted (Column encryption)] (常に暗号化を有効にする(カラムの暗号化)) | このオプションを選択すると、Microsoftの[Always encrypted](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-ver15)機能が使用され、データが暗号化および保護されます。このオプションを使用するためには、事前に[Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/general/basic-concepts)でシークレットを保存しておく必要があります:<br><br><ul> <li> <span>[Application Client ID] (アプリケーションクライアントID)</span>: 登録済みアプリケーションのクライアントIDを入力します。この情報は、<span><span>Azure Active Directory</span> &gt; <span>[App registrations] (アプリの登録)</span> &gt; <span>[Essentials] (基本)</span></span>の下にあるアプリの詳細に記載されています。</li> <li> <span>[Application Client Secret] (アプリケーションクライアントシークレット)</span>: 登録済みアプリケーションのクライアントパスワードを入力します。この情報は、<span><span>Azure Active Directory</span> &gt; <span>[App registrations] (アプリの登録)</span> &gt; <span>[Certificates and secrets] (証明書とシークレット)</span></span>の下にあるアプリの詳細に記載されています。</li> </ul><br><br>この機能には、クエリー操作とステートメントに関する制限がいくつか適用されます。制限事項の包括的なリストは、[Microsoft SQL Serverのドキュメンテーション](https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-ver15#limitations)をご覧ください。 |
| [Fields terminated by] (フィールド区切り) | フィールドを区切る文字、文字列、正規表現のいずれか。 |
| [Rows terminated] (行区切り) | 行を区別するための文字列(例: Unixでは"\n"on)。 |
| [First row] (最初の行) | アクションを開始する行の番号を入力します。 |
| [Code page] (コードページ) | 特定の文字セットを数値コードポイント値にマッピングするために使われるOEMコードページ。 |
| [Data file type] (データファイルのタイプ) | 処理するデータのタイプを選択します。 |
| [Output] (出力) | Microsoft SQL Serverデータベースの標準出力に使うタイプを選択します。<br><br><ul> <li> <span>[to console] (コンソールへ出力)</span> </li> <li> <span>[to global variable] (グローバル変数に出力)</span> </li> </ul><br><br>これらのプロパティは、[Action] (アクション)ドロップダウンリストで[BCP query out] (BCPクエリーアウト)が選択されている場合に利用できます。 |
| [Fire Triggers] (トリガーの起動) | このチェックボックスをオンにすると、バルク挿入操作中にデータが読み取られるテーブルで定義された挿入トリガーが実行されます。<br><br>これらのプロパティは、[Action] (アクション)ドロップダウンリストで[Bulk insert] (バルク挿入)が選択されている場合に利用できます。 |
| [tStatCatcher Statistics] (tStatCatcher統計) | このチェックボックスを選択すると、コンポーネントレベルでログデータを収集できます。 |
| [Enable parallel execution] (並列実行を有効化) | このチェックボックスを選択すると、複数のデータフローを同時に処理することにより、高速データ処理を実行できます。このフィーチャーは、データベースまたは複数の挿入を並行して処理するアプリケーションの機能と、関係するCPUの数に依存していることにご注意ください。[Number of parallel executions] (並列実行の数)フィールドで次のいずれかの操作を行います。<br><br><ul> <li>実行する並列実行の数を入力します。</li> <li><span>Ctrl + スペース</span>を押し、リストから適切なコンテキスト変数を選択します。コンテキスト変数の詳細は、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/contexts-and-variables" target="_blank">コンテキストと変数を使用</a>をご覧ください。 </li> </ul><br><br>並列実行を有効にすると、グローバル変数を使ってサブジョブで戻り値を取得することはできないことにご注意ください。<br><br><ul><li> <span>[Action on table] (テーブルでのアクション)</span>フィールドは、並列化ファンクションでは利用できません。したがって、テーブルを作成する場合は、<span>tCreateTable</span>のコンポーネントを使用する必要があります。 </li><li> 						            並列実行を有効にすると、グローバル変数を使ってサブジョブで戻り値を取得できません。 </li> </ul> |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| **使用ルール** | このコンポーネントは、tMSSqlOutputBulkコンポーネントと共に使います。一緒に使えば、MSSqlデータベースをフィードする時にパフォーマンスが向上します。 |
| [Dynamic settings] (ダイナミック設定) | [+]ボタンをクリックしてテーブルに行を追加し、[Code] (コード)フィールドにコンテキスト変数を入力して、ジョブ内で計画した複数の接続からデータベース接続をダイナミックに選択します。この機能は、データストラクチャーが同じでデータベースが異なるデータベーステーブルにアクセスする必要がある場合、特に、Talend Studioを介さずにジョブをデプロイおよび実行する必要がある時など、ジョブの設定を変更できない環境で作業している場合に役立ちます。<br><br>[Dynamic settings] (ダイナミック設定)テーブルは、[Basic settings] (基本設定)ビューで[Use an existing connection] (既存の接続を使用)チェックボックスがオンになっている時のみ利用可能です。ダイナミックパラメーターを定義すると、[Basic settings] (基本設定)ビューの[Component List] (コンポーネントリスト)ボックスは利用できなくなります。<br><br>ダイナミックパラメーターの定義法を示すユースケースについては、[コンテキストベースのダイナミック接続によってデータベースからデータを読み取り](https://help.qlik.com/talend/r/ja-JP/8.0/components/defining-context-groups/reading-data-from-databases-through-context-based-dynamic-connections)と、[ダイナミックにロードされた接続パラメーターを使って異なるMySQLデータベースからデータを読み取り](https://help.qlik.com/talend/r/ja-JP/8.0/components/context/reading-data-from-different-mysql-databases-using-dynamically-loaded-connection-parameters)をご覧ください。ダイナミック設定とコンテキスト変数の詳細は、[ダイナミックスキーマ](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/dynamic-schema)と[コンテキストグループを作成し、その中でコンテキスト変数を定義](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/creating-context-group-and-define-context-variables-in-it)をご覧ください。 |
| 制限事項 | ライセンスの互換性の問題のため、このコンポーネントの使用に必要な1つ以上のJARが提供されていません。この特定のコンポーネントに不足しているJARをインストールするには、Component (コンポーネント)タブビューの[Install] (インストール)ボタンをクリックします。Talend StudioのIntegrationパースペクティブにある[Modules] (モジュール)タブでも、不足しているすべてのJARを簡単に見つけて追加できます。詳細は、[外部モジュールをインストール](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/installing-external-modules)をご覧ください。 |