locked
ExOleDB in Exchange Server 2007 RRS feed

  • Question

  • I have developed an agent for Exchange Server. It use exoledb and event sinks for interacting with Exchange. For registration we use RegEvent.vbs (from Exchange Server 2007 SDK).

    It works fine on 2000/2003 versions. But on Exchange 2007 even RegEvent.vbs script doesn’t work. It shows “Error Opening Connection : 3706 Provider cannot be found. It may not be properly installed.

    I use this script on a server where mailboxes physically reside. Exchange roles on the server: Mailbox, Client Access, Hub Transport, Unified Messaging. I use RegEvent.vbs under Admin account (member of administrators, domain admins, domain users, enterprise admins, group policy creator owners, schema admin).

     

    I checked existence of ExOleDb.dll. It seems everything ok. In Exchange installation logs I found:

    [4/26/2007 8:00:06 PM] [2] Interpreting line <RegisterDLL:C:\Program Files\Microsoft\Exchange Server\bin\davex.dll> -- ID:31259 --

    [4/26/2007 8:00:06 PM] [2] Interpreting line <RegisterDLL:C:\Program Files\Microsoft\Exchange Server\bin\exprox.dll> -- ID:31259 --

    [4/26/2007 8:00:06 PM] [2] Interpreting line <CreateProcess:C:\Program Files\Microsoft\Exchange Server\bin;regsvr32 /s exoledb.dll;180000> -- ID:31259 --

    [4/26/2007 8:00:06 PM] [2] Process created ... waiting (180000)

    [4/26/2007 8:00:07 PM] [2] Process has exited with 00000000

    [4/26/2007 8:00:07 PM] [2] Interpreting line <RegisterDLL:C:\Program Files\Microsoft\Exchange Server\bin\exodbprx.dll> -- ID:31259 --

    [4/26/2007 8:00:08 PM] [2] Interpreting line <RegisterDLL:C:\Program Files\Microsoft\Exchange Server\bin\exodbpc.dll> -- ID:31259 --

     

    We have 2 environments with Exchange 2007:

    • Exchange Server 2007 on Windows Server 2003 x64 SP1
    • Exchange Server 2007 on Windows Server 2003 x64 SP2

    On both we have the same problem.

    Tuesday, May 15, 2007 7:45 AM

Answers

  • That is not right answer to the problem.

     

    The main problem with the scripts which works on x64 bit platforms is that it must be run under "proper system platform".

     

    What does "proper system platform" mean?

    If the VBS script uses 32-bit modules/dlls/libs/functions in its code, it has to be run under 32-bit cmd shell.

    If the VBS script uses 64-bit modules/dlls/libs/functions, it has to be run under 64-bit cmd shell.

    Exchange 2007 is 64-bit server application,so the scripts which call Exchange connection provider EXOLEDB or other Exchange interfaces MUST BE run under 64-bit cmd.

     

    Where is the problem?

    Most of people use external\additional file managers (for example Total Commander or FAR) to work with Windows. These file managers are for present time 32-bit applications and uses 32-bit emulation/redirection on x64 platform. The people who try to run scripts directly from such file managers or from cmd.exe started under such file manager are unwillingly using 32-bit system platform emulation (for cmd.exe or process). Only scripts which use 32-bit functions/dlls/libs will work OK in such environment, but not 64-bit's. For example REGEVENT.vbs under 64-bit platform uses Exchange lib/dlls which are 64-bit, so it has to be run under 64-bit cmd.exe.

     

    How to solve this?

    Please run scripts using 64-bit modules/dlls/funcions by "clicking":

    START->Run...

    and in the window write:

    cmd

    This assures that You run cmd which is 64-bit native version and You can use REGEVENT.vbs without error mentioned in this topic:

    Error Opening Connection : 3706 Provider cannot be found. It may not be properly installed.

     

    Last notes

     Some people copy cmd.exe from Windows\system32 directory(dedicated for 64-bit apps) to Windows\SYSWOW64 directory (dedicated for 32-bit apps) to solve the problem. It is not recomended, becouse cmd 64-bit may not work with other 32-bit modules which resides in the folder: Windows\SYSWOW64

     

    Kind Regards.

     

    Tuesday, June 26, 2007 12:55 AM

All replies

  • Hello,

    We had a similar issue come through email recently. Perhaps this suggestion will work for you as well...

     

    I was working on the xxx case and was able to Re-produce the problem.

    The problem seems to me that exodbprx.dll is not properly registered on his exchange installation.

     

    Could you please ask the customer to try re-registering the above file using the following command.

     

    RegSvr32 “C:\Program Files\Microsoft\Exchange Server\Bin\exodbprx.dll”

     

     

    -brenda (ISV Buddy Team)

    Tuesday, June 5, 2007 9:01 PM
  • That is not right answer to the problem.

     

    The main problem with the scripts which works on x64 bit platforms is that it must be run under "proper system platform".

     

    What does "proper system platform" mean?

    If the VBS script uses 32-bit modules/dlls/libs/functions in its code, it has to be run under 32-bit cmd shell.

    If the VBS script uses 64-bit modules/dlls/libs/functions, it has to be run under 64-bit cmd shell.

    Exchange 2007 is 64-bit server application,so the scripts which call Exchange connection provider EXOLEDB or other Exchange interfaces MUST BE run under 64-bit cmd.

     

    Where is the problem?

    Most of people use external\additional file managers (for example Total Commander or FAR) to work with Windows. These file managers are for present time 32-bit applications and uses 32-bit emulation/redirection on x64 platform. The people who try to run scripts directly from such file managers or from cmd.exe started under such file manager are unwillingly using 32-bit system platform emulation (for cmd.exe or process). Only scripts which use 32-bit functions/dlls/libs will work OK in such environment, but not 64-bit's. For example REGEVENT.vbs under 64-bit platform uses Exchange lib/dlls which are 64-bit, so it has to be run under 64-bit cmd.exe.

     

    How to solve this?

    Please run scripts using 64-bit modules/dlls/funcions by "clicking":

    START->Run...

    and in the window write:

    cmd

    This assures that You run cmd which is 64-bit native version and You can use REGEVENT.vbs without error mentioned in this topic:

    Error Opening Connection : 3706 Provider cannot be found. It may not be properly installed.

     

    Last notes

     Some people copy cmd.exe from Windows\system32 directory(dedicated for 64-bit apps) to Windows\SYSWOW64 directory (dedicated for 32-bit apps) to solve the problem. It is not recomended, becouse cmd 64-bit may not work with other 32-bit modules which resides in the folder: Windows\SYSWOW64

     

    Kind Regards.

     

    Tuesday, June 26, 2007 12:55 AM