Transaktionsnachrichtenbatches
Einige Adapter müssen eine externe Transaktion mit einer internen BizTalk Server-Transaktion koordinieren. Beispielsweise muss der mit BizTalk Server bereitgestellte SQL-Adapter eine SQL Server Transaktion mit einer BizTalk Server-Transaktion koordinieren. Hierzu benötigt der Adapter Zugriff auf das BizTalk Server Transaktionsobjekt. Ein Transaktionsobjekt wird explizit erstellt und dem Batch zugeordnet, bevor der Batch an BizTalk Server übermittelt wird. Ein Batch, dem ein Transaktionsobjekt zugeordnet ist, wird als transaktionaler Batch bezeichnet. Wenn Sie Ihr eigenes MSDTC-Transaktionsobjekt (Microsoft Distributed Transaction Coordinator) bereitstellen, können Sie die "garantierte, einmalige und einmalige" Übermittlung von Daten in und aus BizTalk Server erreichen.
Transaktionale Datenbankadapter wie der SQL-Adapter können möglicherweise Deadlocks in der externen Datenbank auslösen, da für den Batch eine einzige Transaktion verwendet wird. Daher ist die Batchgröße des SQL-Adapter fest programmiert auf 1 festgelegt.
Wenn der Adapter im Gültigkeitsbereich dieser Transaktion weitere Ressourcen-Manager eintragen muss, z. B. eine weitere Datenbank oder MSMQ, muss er eine explizite externe Transaktion erstellen und an die Messaging-Engine übergeben. Das Erstellen einer externen Transaktion und Zuordnen zu einem Batch wird als transaktionaler Batch bezeichnet. Ein transaktionaler Adapter ist ein Adapter, der transaktionale Batches durch das explizite Erstellen einer externen Microsoft DTC-Transaktion (Microsoft Distributed Transaction Coordinator, MSDTC) verwendet.
Einer der Gründe, warum ein Adapter BizTalk Server mit einer Transaktion bereitstellt, besteht darin, sicherzustellen, dass entweder BizTalk Server oder das externe System über einen Datensatz der Daten verfügt. Diese Aufzeichnung stellt sicher, dass die Nachricht genau einmal übermittelt wird.
Hinweis
Weitere Informationen zu MSDTC finden Sie unter Distributed Transaction Coordinator.
Der Dateiadapter ist ein Beispiel für einen Adapter, der keinen Zugriff auf die Transaktion benötigt, da die von ihm verwalteten externen Dateivorgänge nicht transaktional sind. In diesem Fall stellt der Adapter kein Transaktionsobjekt für BizTalk Server bereit. Der SQL-Adapter interagiert hingegen mit einer SQL-Datenbank und verfügt möglicherweise über zusätzliche Vorgänge außerhalb der BizTalk Server Nachrichteninteraktionen. In diesem Fall kann eine externe MSDTC-Transaktion sinnvoll sein, damit der Adapter an BizTalk Server übergeben wird.