事务性消息批
某些适配器必须协调外部事务与内部BizTalk Server事务。 例如,随 BizTalk Server 提供的 SQL 适配器必须与BizTalk Server事务协调SQL Server事务。 为此,适配器需要访问 BizTalk Server 事务对象。 在将批处理提交到BizTalk Server之前,将显式创建一个事务对象并与该批处理相关联。 具有关联事务对象的批处理称为事务批处理。 通过提供自己的 Microsoft 分布式事务处理协调器 (MSDTC) 事务对象,可以实现“保证的一次和一次”,将数据传入和传出BizTalk Server。
事务数据库适配器(如 SQL 适配器)可能会在外部数据库中发生死锁,因为批处理使用了单个事务。 这就是 SQL 适配器的批大小硬编码为 1 的原因。
如果适配器需要在该事务的范围内登记其他资源管理器(如另一个数据库或 MSMQ),则必须创建显式外部事务并将其传递给消息引擎。 创建外部事务并将其与批处理相关联称为事务性批处理。 事务适配器是通过显式创建外部 Microsoft 分布式事务处理协调器 (MSDTC) 事务来利用事务批处理的适配器。
适配器为BizTalk Server提供事务的原因之一是确保BizTalk Server或外部系统具有数据记录。 此记录可确保消息传递一次且仅传递一次。
注意
有关 MSDTC 的详细信息,请参阅 分布式事务处理协调器。
文件适配器是不需要访问事务的适配器示例,因为它管理的外部文件操作不是事务性的。 在这种情况下,适配器不提供事务对象来BizTalk Server。 另一方面,SQL 适配器与 SQL 数据库交互,并且可能在其BizTalk Server消息交互之外执行其他操作。 在这种情况下,外部 MSDTC 事务对于将适配器传递给 BizTalk Server 可能有意义。