Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

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


View products that this article applies to.

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.

↑ Back to the top


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.

↑ Back to the top


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.

↑ Back to the top


Status

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

↑ Back to the top


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 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 FIX: DTC/MTS Errors Cause 'Ora-00000 normal, successful completion' Messages

↑ Back to the top


Keywords: KB269344, kbpending, kboracle, kbdtc, kbbug, kb3rdparty

↑ Back to the top

Article Info
Article ID : 269344
Revision : 3
Created on : 5/12/2003
Published on : 5/12/2003
Exists online : False
Views : 627