Solved

Using Oracle and MTS

Posted on 2000-03-27
10
784 Views
Last Modified: 2010-05-18
I created an ActiveX component (dll) for inserting and updating data in an oracle server(7.3)through ODBC driver(compatible with MTS). I used ADODB. Command object for doin' so. I registered that component in MTS (residing on an IIS web server) and called that object from an ASP. I get the error message:
"failed to enlist on calling object's transaction" at the point I make a connection.open... statement in the active x component.
I searched MSDN for that, and it tells that I should run"TestOracleXaConfig" program to ensure that I can successfully connect to the oracle server without using MTS.
I ran that one on the MTS server, and saw that it fails to load XA73.dll. Ihope XA73.dll is required for oracle 7.3 for exchange of data using XA protocol, but I could not find one in the server( I should say that the server is the MTS, IIS and the Database server, all in one M/C). can any one tell me who provides(ships) this Dll, Oracle or MTS, and a possible solution to my problem?
0
Comment
Question by:Subhasundar
  • 3
  • 3
  • 2
  • +1
10 Comments
 
LVL 28

Expert Comment

by:AzraSound
ID: 2661380
that dll ships with oracle and I have it if you need it.
0
 

Author Comment

by:Subhasundar
ID: 2663805
Thank you very much for the info. Infact, we have moved far from that.This XA73.dll is used if we use Microsoft ODBC for Oracle. We have recently installed Oracle 8i and using Oracle ODBC driver and we now have our Oracle MTS services up and running.But now the problem is that this MTS service can't talk with Microsoft DTC.
What is the probable cause of this error?
0
 

Author Comment

by:Subhasundar
ID: 2664529
Let me detail it.
We are trying to talk with oracle 8i databse through MTS component.We are using microsoft provided ODBC driver manager version(3.51) and ODBC driver for oracle (ver 8.0.1) provided with oracle 8i.
we are getting the error message:
"
Microsoft OLE DB Provider for ODBC Drivers error '8004d00a'

[Oracle][ODBC]Failed to enlist global transaction with DTC
"
Documentation about setting up MTS- ORACLE connection in MSDN details all about oracle 7.3 and 8.0, but not with 8i version.
We have followed the instructions provided by oracle 8i manuals which gives a detail of talking to MTS.
Still we are getting the above error.
0
 
LVL 28

Expert Comment

by:AzraSound
ID: 2665104
so you were able to finally modify your code to work with MTS and you installed the component into MTS successfully into a package? You included all the objectcontext object code needed? What properties did you set for mtstransactionmode and version compatibility in your project properties of your dll?
0
 

Author Comment

by:Subhasundar
ID: 2668683
yaah, I have done all the things that you have asked . I had made a package  and registered my component from MTS management console. I can see all the methods and properties of the object from the manage ment console. moreover, it is also getting instantiated, activated.. the status view says so.
I had binary compatibility in my project and the MTSTransactionmode is "requires transaction".
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 

Accepted Solution

by:
fgregoire earned 200 total points
ID: 2689379
I solved the same problem some weeks ago. But my server database is Oracle 8i and my client too.
Job to do on the server:
- Create the user MTSSYS with a script that are on the Oracle Server in RDBMS Directory.

Job to do on the client computer
- Install MSDTC (come with Option Pack 4 or NT 4)
- Install the client oracle 8i
- Install the patch for ODBC Oracle Driver for version 8.1.5.5 or 8.0.1.5.5 (Oracle web site)
- Install the patch MTS for Oracle (Oracle web site)
- With the Oracle Server Installation Disk: Install the service MTS for Oracle. With this you will create a service for your Oracle Alias and the user MTSSYS that you have created previously. (See Oracle 8i documentation for more information)
- Always use the new Oracle ODBC Driver
- Never use BeginTrans, CommitTrans or RollbackTrans in our DLL. Use SetComplete and SetAbort from ContextObject of MTS

For more information refer to Oracle 8i documentation not Oracle 7.3.4 or Microsoft.

If this don't work, uninstall your Oracle client 8i from your client and use Oracle Client 7.3.4, it work fine.
0
 

Expert Comment

by:RayLeong
ID: 2852321
Hi fgregoire,

I had some problem with oracle 8.1.5 and MTS. I had followed your instructions above, but i still can't get it to work. I had posted a question titled "Oracle and MTS" on 27 May and would appreciate if you can give me some advice.

Anyone who wishes to attempt the question are welcome.
0
 

Expert Comment

by:fgregoire
ID: 2858159
Hi RayLeong!

If you have problem with Oracle 8.1.5 and MTS, do you have a error message?

What doesn't work?


0
 

Expert Comment

by:RayLeong
ID: 2858202
No, it just aborted nicely without rolling back what i insert into the database or the message queue. Anyway i am the purposely place a incorrect select statement to simulate an error.
0
 

Expert Comment

by:RayLeong
ID: 2858303
No, it just aborted nicely without rolling back what i insert into the database or the message queue. Anyway i am the purposely place a incorrect select statement to simulate an error.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now