none
[OLE/DB provider returned message: [MERANT][ODBC Sybase driver]Distributed transaction enlistment failed.]

    Question

  • Ok, i have seen tons of articles on the error, but still can't figure it out. This is being executed through nested procedure calls, until it is roughly 3 levels deep, then makes a call to Sybase using dynamic SQL and OPENROWSET. The message that is returned is listed below. Yes, i looked up all I could find on it. The thing I find interesting is I can simply take the dynamic SQL and the openrowset call out and run it in query analyzer just fine. but when I run it through the procedure it generates the errors. Any thoughts?

     

    [OLE/DB provider returned message: [MERANT][ODBC Sybase driver]Distributed transaction enlistment failed.]

    Server: Msg 7391, Level 16, State 1, Line 1

    The operation could not be performed because the OLE DB provider 'MSDASQL' was unable to begin a distributed transaction.

    [OLE/DB provider returned message: [MERANT][ODBC Sybase driver]Load of XA library failed.]

    OLE DB error trace [OLE/DB Provider 'MSDASQL' ITransactionJoin::JoinTransaction returned 0x8004d00a].


    John M. Couch Insight Enterprises Inc. 6820 S. Harl Ave, Tempe, Az 85283 Email: john.couch@insight.com
    Wednesday, September 1, 2010 3:33 AM

Answers

  • Has to do with an insert into...exec call.
    John M. Couch Insight Enterprises Inc. 6820 S. Harl Ave, Tempe, Az 85283 Email: john.couch@insight.com
    • Marked as answer by John Couch Wednesday, September 8, 2010 2:49 PM
    Wednesday, September 8, 2010 2:01 PM

All replies

  • John,

    It looks that you are working on a distributed transaction scenario. Could you please first check if the Distributed Transaction Coordinator service was started? You can check it at Administrative Tools -> Services panel. If it is not started, please start it.

    Also if your Sybase server is also running on a Windows system, please also make sure that DTS service is started on that server. If it is on third party OSes, you need to make sure that the function supporting distributed transaction on that OS is enabled.


    Please remember to mark the replies as answers if they help and unmark them if they provide no help
    Thursday, September 2, 2010 9:55 AM
    Moderator
  • The service is running on the Windows Server. The Sybase database is on AIX.
    John M. Couch Insight Enterprises Inc. 6820 S. Harl Ave, Tempe, Az 85283 Email: john.couch@insight.com
    Wednesday, September 8, 2010 11:53 AM
  • Is your Sybase db set up for accepting Distributed Transactions (ex with Adaptive Server), see: http://download.sybase.com/pdfdocs/asg1250e/dtm.pdf

    Tom


    Tom Van Zele | Blog | Twitter | LinkedIn
    Wednesday, September 8, 2010 12:51 PM
  • Yes. I think the problem is somewhere in the nesting of the procedure calls and dumping results to temp tables. If I take the call out by itself, it runs perfectly fine. Meaning, I call the inner most procedure passing in the arguments. I am at the point where I am testing form the second level procedure call now. 

     


    John M. Couch Insight Enterprises Inc. 6820 S. Harl Ave, Tempe, Az 85283 Email: john.couch@insight.com
    Wednesday, September 8, 2010 1:42 PM
  • Has to do with an insert into...exec call.
    John M. Couch Insight Enterprises Inc. 6820 S. Harl Ave, Tempe, Az 85283 Email: john.couch@insight.com
    • Marked as answer by John Couch Wednesday, September 8, 2010 2:49 PM
    Wednesday, September 8, 2010 2:01 PM