Какой драйвер вы используете?
IBM Connect DB2 поддерживает распределенные транзакции, управляемые Windows DTC.
Драйвер DB2 от Microsoft, который входит в состав Microsoft Host Integration Server, также выполняет транзакции.
Я слышу от тебя две разные вещи. Вы хотите сделать транзакцию, которая охватывает SQL и DB2. а также вы хотите создать компонент, который участвует в распределенной транзакции. Это можно сделать вместе, но первое не требует второго.
Используя классы System.Transactions в .NET 2.0, вы можете сделать это:
TransactionOptions options = new TransactionOptions();
options.IsolationLevel = IsolationLevel.Serializable;
options.Timeout = TransactionManager.DefaultTimeout;
using(var scope = new TransactionScope(TransactionScopeOption.Required,
options,
EnterpriseServicesInteropOption.Full) )
{
TransactionalWorkinDb2();
TransactionalWorkinSql();
scope.Complete();
}
Результатом будет распределенная транзакция, охватывающая DB2 и SQL, но это не компонент, который участвует в распределенной транзакции, если вы понимаете, о чем я.
Другой альтернативой является использование модели EnterpriseServices / COM + для определения компонента, который делает что-то , и маркировки этого компонента как транзакционного. Это тоже работает, но не обязательно делать распределенные транзакции в .NET.