トランザクション メッセージ バッチ
一部のアダプターでは、外部トランザクションを内部BizTalk Server トランザクションと調整する必要があります。 たとえば、BizTalk Serverで提供される SQL アダプターは、BizTalk Server トランザクションとSQL Server トランザクションを調整する必要があります。 これを行うには、アダプターがBizTalk Serverトランザクション オブジェクトにアクセスする必要があります。 トランザクション オブジェクトは、バッチがBizTalk Serverに送信される前に、明示的に作成され、バッチに関連付けられます。 トランザクション オブジェクトが関連付けられているバッチを "トランザクション バッチ" といいます。 独自の Microsoft 分散トランザクション コーディネーター (MSDTC) トランザクション オブジェクトを指定することで、データのBizTalk Serverとの間での "保証された、一度だけ" の配信を実現できます。
SQL アダプターのようなトランザクション データベース アダプターは、バッチに使用される 1 つのトランザクションが原因で外部データベースにデッドロックを引き起こす可能性があります。 このため、SQL アダプターのバッチ サイズは特定の値にハードコードされています。
トランザクションのスコープ内で、アダプターが別のデータベースや MSMQ などの追加リソース マネージャーを参加させる必要がある場合は、明示的な外部トランザクションを作成し、メッセージング エンジンに渡す必要があります。 外部トランザクションを作成し、それをバッチに関連付けることは、トランザクション バッチと呼ばれます。 トランザクション アダプターは、外部の Microsoft 分散トランザクション コーディネーター (MSDTC) トランザクションを明示的に作成することによってトランザクション バッチを使用するアダプターです。
アダプターがトランザクションをBizTalk Serverする理由の 1 つは、BizTalk Serverまたは外部システムにデータのレコードがあることを確認することです。 このレコードによって、メッセージが確実に一度だけ配信されるようになります。
Note
MSDTC の詳細については、「 分散トランザクション コーディネーター」を参照してください。
ファイル アダプターは、管理対象となる外部ファイル操作がトランザクションではないためトランザクションへのアクセスを必要としないアダプターの一例です。 この場合、アダプターは、BizTalk Serverするトランザクション オブジェクトを提供しません。 一方、SQL アダプターは SQL データベースとやり取りし、BizTalk Serverメッセージ操作の外部で追加の操作を行う場合があります。 この場合、外部 MSDTC トランザクションは、アダプターが BizTalk Server に渡すのに意味がある場合があります。