none
System.Transactions and Informix RRS feed

  • Question

  • Does any know whether InformixIBM Informix .NET Provider 3.0 supports system.transactions. I have looked in their manual but there is no mention of it. They have mentioned about support for MSDTC which leads me to the impression that system.transactions would work with this provider.

    Would appreciate your inputs on this

    Thanks
    Sai
    Tuesday, February 19, 2008 9:53 AM

Answers

  • (I thought MSDTC and system.Transactions are closely related because distributed transactions comes into picture when we talk of MSDTC and system.transactions has the capability to promote or demote an existing transaction from LTM to distributed and vice-versa.)


    No not really because if you are using Oracle or SQL Server 2005 you don't need MSDTC because both Microsoft and oracle have implemented .NET providers that converts the System.Transaction classes transactions to a unit of work.  The reason is RDBMS transactions is a unit of work nesting is allowed with savepoints but none atomic transaction as System.Transaction TransactionScope is not allowed.

     

    (Resources that can automatically enlist in transactions are called transactional resource managers; these include most of the popular commercial databases and durable resources (such as Microsoft Message Queue or IBM MQSeries).

     

    Transactional components have always performed none atomic transaction and RDBMS transaction have always been atomic so you need to find out how the components transaction is passed to your RDBMS because that is what determines if you need MSDTC or not. 


    (Well I am not sure whether IBM Informix drivers does that. Ideally it should since it does support the two phase commit protocol. I think MSDTC and System.Transactions are very closely related.)


    If IBM did not implement it then you will need MSDTC which is what you need to do find out but System.Transaction does not automatically mean MSDTC because it is actually implementation dependent.  You also have to option to use ADO.NET Transaction which are atomic by default so you don't need MSDTC and you can nest with Savepoints.

     

    Saturday, February 23, 2008 3:49 PM

All replies

  • MSDTC and System.Transaction are not really related because System.Transaction is application layer transaction which is different from the ADO.NET and RDBMS transaction.  MSDTC manages RDBMS distributed transaction but it also manages System.Transaction for SQL Server 2000 and below and Oracle which implemented the class for its native provider.  You could pass your System.Transaction code to ADO.NET transactions implemented by IBM in the native Informix provider to run some tests just make sure the ADO.NET transaction is atomic because the System.Transaction type is not and the RDBMS transaction must be atomic.  I would not start with the MSDTC would only use it if  you run into errors.

     

    Tuesday, February 19, 2008 2:07 PM
  • I thought MSDTC and system.Transactions are closely related because distributed transactions comes into picture when we talk of MSDTC and system.transactions has the capability to promote or demote an existing transaction from LTM to distributed and vice-versa. DTC manages transactions across objects or components, across processes and machines, and across multiple resource managers. But these resource managers needs to be implemented by the respective database drivers. Resources that can automatically enlist in transactions are called transactional resource managers; these include most of the popular commercial databases and durable resources (such as Microsoft Message Queue or IBM MQSeries).

    Well I am not sure whether IBM Informix drivers does that. Ideally it should since it does support the two phase commit protocol. I think MSDTC and System.Transactions are very closely related.

    Pls do let me know your views on it
    Saturday, February 23, 2008 11:17 AM
  • (I thought MSDTC and system.Transactions are closely related because distributed transactions comes into picture when we talk of MSDTC and system.transactions has the capability to promote or demote an existing transaction from LTM to distributed and vice-versa.)


    No not really because if you are using Oracle or SQL Server 2005 you don't need MSDTC because both Microsoft and oracle have implemented .NET providers that converts the System.Transaction classes transactions to a unit of work.  The reason is RDBMS transactions is a unit of work nesting is allowed with savepoints but none atomic transaction as System.Transaction TransactionScope is not allowed.

     

    (Resources that can automatically enlist in transactions are called transactional resource managers; these include most of the popular commercial databases and durable resources (such as Microsoft Message Queue or IBM MQSeries).

     

    Transactional components have always performed none atomic transaction and RDBMS transaction have always been atomic so you need to find out how the components transaction is passed to your RDBMS because that is what determines if you need MSDTC or not. 


    (Well I am not sure whether IBM Informix drivers does that. Ideally it should since it does support the two phase commit protocol. I think MSDTC and System.Transactions are very closely related.)


    If IBM did not implement it then you will need MSDTC which is what you need to do find out but System.Transaction does not automatically mean MSDTC because it is actually implementation dependent.  You also have to option to use ADO.NET Transaction which are atomic by default so you don't need MSDTC and you can nest with Savepoints.

     

    Saturday, February 23, 2008 3:49 PM
  • If you meant System.Transactions for isolation levels then yes its supported in Informix .NET Provider. You might want to try latest version of CSDK 3.50.TC3 for the same. However I believe this has been implemented from CSDK 3.50.TC1 onwards.

     

    Thanks

    -Deoker

    Wednesday, December 3, 2008 8:04 AM