Microsoft Knowledge Base Email Alertz

When attempting to enlist in a distributed transaction by using either the Microsoft ODBC for Oracle or the Microsoft OLE DB Provider for Oracle, the following error message occurs:

Search KbAlertz

Advanced Search

Receive Microsoft Knowledge Base articles by E-Mail?

Every night we scan the Microsoft Knowledge Base. If technologies you're interested in are updated, we'll send you an e-mail. You only get one e-mail a day, and only when new articles are added.

Click here to create a
FREE account
Already have an account?
[Click here to Login]











Microsoft Knowledge Base Article

This article contents is Microsoft Copyrighted material.
©2005-©2007 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks

Article ID: 269344 - Last Review: May 12, 2003 - Revision: 2.1

BUG: Microsoft Oracle ODBC Driver and OLE DB Provider Report "Driver Not Capable"

This article was previously published under Q269344

SYMPTOMS

When attempting to enlist in a distributed transaction by using either the Microsoft ODBC for Oracle or the Microsoft OLE DB Provider for Oracle, the following error message occurs:
Driver not capable.

CAUSE

The Microsoft ODBC for Oracle driver and Microsoft OLE DB Provider for Oracle use the Mtxoci.dll file to communicate with the OCI layer of Oracle. The version of Mtxoci.dll that is provided with Microsoft Data Access Components (MDAC) 2.5 or later requires full security access to the registry keys for the Oracle client DLLs. If the MDAC client does not have full access to these keys, the MDAC client defaults to using the Oracle 7.x client DLLs. If Mtxoci.dll cannot find the proper Oracle library DLLs, it unloads itself and the Microsoft Oracle drivers default to using the Ociw32.dll file directly. If Mtxoci.dll is not loaded, you can access normal Oracle database functionality through the Ociw32.dll file, but extended functionality, such as distributed transactions, is disabled.

RESOLUTION

Because Microsoft Windows 95 and Microsoft Windows 98 do not have security settings on the registry keys, this problem does not affect Microsoft Windows 95 or Microsoft Windows 98-based computers. On Microsoft Windows NT and Microsoft Windows 2000-based computers, use the Regedt32.exe tool to set permissions on the appropriate keys (grant Everyone full permissions, or grant full permissions to restricted users such as the System account). Refer to the "More Information" section on which keys are affected.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Both the Microsoft ODBC for Oracle driver and the Microsoft OLE DB Provider for Oracle rely on Mtxoci.dll to provide support for distributed transactions. When Mtxoci.dll is first loaded, it attempts to read the Oracle client DLL keys from the registry to determine the proper Oracle client DLLs to load.

On Microsoft Windows 95, Microsoft Windows 98 or Microsoft Windows NT 4.0-based computers, these keys are located under the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server\Local Computer\My Computer
On Microsoft Windows 2000-based computers, these keys are located under the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
There are 3 string values under these keys:
  • OracleXaLib
  • OracleSqlLib
  • OracleOciLib
Depending on which version of the Oracle client you have installed, these keys can point to different Oracle client DLL names. These keys are documented in the following Microsoft Knowledge Base article:
193893  (http://kbalertz.com/Feedback.aspx?kbNumber=193893/EN-US/ ) INFO: Using Oracle with Microsoft Transaction Server and COM+
The code to read these registry keys in Mtxoci.dll requests KEY_ALL_ACCESS rights when attempting to read these keys. If the client process does not have adequate permissions to open these keys (for example, under Internet Information Server [IIS] or inside of a Microsoft Transaction Server [MTS] or Component Object Model [COM+] host running under a System account), Mtxoci.dll fails to read the keys and defaults back to hard-coded settings for the Oracle 7.x client DLLs.

If the Oracle client DLLs cannot be found, the Microsoft Oracle drivers unload Mtxoci.dll and uses Ociw32.dll directly. Use of Ociw32.dll disables support for distributed transactions with the Microsoft Oracle drivers and can result in a "Driver not capable" error message being reported to the client. Note that with certain versions of Mtxoci.dll this could incorrectly report the following error message:
ORA-00000: normal, successful completion.
Refer to the following Microsoft Knowledge Base article for more information:

254675  (http://kbalertz.com/Feedback.aspx?kbNumber=254675/EN-US/ ) FIX: DTC/MTS Errors Cause 'Ora-00000 normal, successful completion' Messages


APPLIES TO
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Microsoft Open Database Connectivity 2.5
  • Microsoft Open Database Connectivity 2.5
  • Microsoft Open Database Connectivity 2.5
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
Keywords: 
kb3rdparty kbbug kbdtc kboracle kbpending KB269344
       

Community Feedback System

Very often, it takes hours to solve a problem. Very often, you've looked high and low, and have tried a lot of solutions. When you finally found it, chances are, it was because someone else helped you. Here's your chance to give back. Use our community feedback tool to let others know what worked for you and what didn't.

Please also understand that the community feedback system is not warranted to be correct, it's simply a system that we've built to let people try and help each other. If something in a feedback response doesn't make sense to you, or you're not comfortable making changes that the feedback talks about (like registry edits), please consult a professional.

Thank you for using kbAlertz.com Feedback System.

-- Scott Cate

Silvio - sascperus NOSPAM-AT-NOSPAM yahoo.com.br Reported as Irrelevant  
Written: 6/30/2004 9:16 AM
I have problem with access database Oracle 7(in mainframe) and Client Oracle 9 in my machine. I make applicattion asp.net, when I access database for query, no problem, but if I try insert data return error, seems missing parameters. If I insert data directly sql plus it's ok, but in application asp.net appears.