Discussion:
Error 8209 Object/Module not found
(too old to reply)
Joseph K. Cobb
2004-11-04 12:45:02 UTC
Permalink
I have a custom .dll that I have recently moved to a W2003 Server box and I'm
having problems getting it to function via RDS. I have followed the same set
of docs that I used when it was set up originally on a W2000 Server. It is
currently functioning on that server, but we are moving it to the 2K3 box and
I'm getting the following error when the first call is made to one of its
methods. Just after the instantiation (which gives no error) I can call any
public method, including one that merely returns true, and I get the following

Internet Server Error: Object/module not found
Err Num 8209 Source = Microsoft ADO/RDS

Could it be MDAC? I know that 2K3 ships with 2.8 and my .dll and calling app
reference 2.7 because of the development machine. Could this be it? I've
double checked the ADCLaunch entries, IIS MSADC VDir, Registered the .dll,
verified all the permissions for these changes, and rebooted.

Anyone have any ideas.

Thanks
Brian Muth
2004-11-04 21:42:41 UTC
Permalink
Have you added MSADCS.DLL as a supported Web Service Extension?

Be sure to:
1.. Open the server's IIS Management Console.
2.. Open the Web Service Extensions folder.
3.. Click Add a new web service extension. . ..
4.. Give the new extension a suitable name. For example: MSADC extension
5.. Click Add.
6.. Click Browse. Browse to the following location:

C:\Program Files\Common Files\System\msadc

Select the MSADCS.DLL file and click OK.

7.. Click Apply, then click OK.
8.. Enable (by default you'll see prohibited) the new web extension.

Brian
Post by Joseph K. Cobb
I have a custom .dll that I have recently moved to a W2003 Server box and I'm
having problems getting it to function via RDS. I have followed the same set
of docs that I used when it was set up originally on a W2000 Server. It is
currently functioning on that server, but we are moving it to the 2K3 box and
I'm getting the following error when the first call is made to one of its
methods. Just after the instantiation (which gives no error) I can call any
public method, including one that merely returns true, and I get the following
Internet Server Error: Object/module not found
Err Num 8209 Source = Microsoft ADO/RDS
Could it be MDAC? I know that 2K3 ships with 2.8 and my .dll and calling app
reference 2.7 because of the development machine. Could this be it? I've
double checked the ADCLaunch entries, IIS MSADC VDir, Registered the .dll,
verified all the permissions for these changes, and rebooted.
Anyone have any ideas.
Thanks
Brian Muth
2004-11-04 21:48:38 UTC
Permalink
BTW, I see you got it working in the Win2000 world.

What was the problem (that you solved)?

Brian
Joseph K. Cobb
2004-11-05 12:34:02 UTC
Permalink
Unfortunately the W2K working version is still the production one. I was
unable to get it to work on the one we were looking at in the previous
thread, so I took your advice and had the NETS people get me another server
to use. I think just to complicate things, the NETS group gave me access to a
2003 server, so now even more variables are involved. A little after posting
this message I did find the information on the Web Service Extensions, and
after doing that I get the following:

Internet Server Error: Cannot Connect to Server
Err Num -2147012889 Source = Remote Data Service 2.0

The method I'm calling is a simple return true with no other code, so no Db
connections should not be involved.

I'm beginning to wonder if the MDAC versions, and therefore the RDS
versions, need to match. That's the only sig difference between the three
machines. My Dev machine is running 2.7. The first 2K box has 2.6, and of
course the 2K3 one is 2.8. The .dll I'm using has no reference to RDS
dataspace so the only place I'm using RDS is from the remote machine running
the application. Both the .dll and the app, however, have reference to ADO
2.7.

I've double-checked the perms and, since its an internal machine, I've set
them much less restrictive than is required. Is there a certain user I should
use for the permissions? I've tried the IUSR and myself with not luck. How
about anon for login?

I really appreciate the help, and maybe if we figure something out, it will
prevent others from this headache :-).

Thanks
Post by Brian Muth
BTW, I see you got it working in the Win2000 world.
What was the problem (that you solved)?
Brian
Brian Muth
2004-11-05 16:23:27 UTC
Permalink
inline...
Post by Joseph K. Cobb
Unfortunately the W2K working version is still the production one. I was
unable to get it to work on the one we were looking at in the previous
thread, so I took your advice and had the NETS people get me another server
to use. I think just to complicate things, the NETS group gave me access to a
2003 server, so now even more variables are involved. A little after posting
this message I did find the information on the Web Service Extensions, and
Internet Server Error: Cannot Connect to Server
Err Num -2147012889 Source = Remote Data Service 2.0
This is occurring on the client side?
Post by Joseph K. Cobb
The method I'm calling is a simple return true with no other code, so no Db
connections should not be involved.
I'm beginning to wonder if the MDAC versions, and therefore the RDS
versions, need to match. That's the only sig difference between the three
machines. My Dev machine is running 2.7. The first 2K box has 2.6, and of
course the 2K3 one is 2.8.
I assure you this is all irrelevant. They do not need to match.
Post by Joseph K. Cobb
The .dll I'm using has no reference to RDS
dataspace so the only place I'm using RDS is from the remote machine running
the application. Both the .dll and the app, however, have reference to ADO
2.7.
And that is perfectly fine.

Joe, this really should be a slam dunk. Why don't you send me your small
client test program, and your small server object (with source code), along
with the precise steps you are taking to install on a Win2003 machine, and
I'll take a look at it off-line. I just don't know what is being overlooked,
but I'm willing to walk in the same footsteps to see for myself. You may
need to give me the weekend.

email to bmnews2 at van dot swi dot com

Brian
Brian Muth
2004-11-09 05:35:04 UTC
Permalink
Joseph,



I reviewed your program and your notes. Duplicated the steps on my Win2003
box and it worked for me right off the bat.



One obvious error (if it is not a typo) is the registry key. According to
your notes, you used FileTransfer.clsFileTransfer. It should be
File_Transfer.clsTransfer.



Best regards,



Brian
Brian Muth
2004-11-09 05:42:33 UTC
Permalink
... It should be File_Transfer.clsTransfer.
Oops.... I meant File_Transfer.clsFileTransfer

Brian
Jim Rodgers
2004-12-07 22:31:37 UTC
Permalink
Man ! I just fixed the same exact problem on my machine. This has been
eating
my lunch for weeks! Plus I had it working on some 2003's and not others.

THANKS BRIAN! It was the web services tip that got me going. Just like
Joseph, I had it working on one server, but the new 2003 server would not
permit it
(same error as Joseph).

The difference between machines is that Visual InterDev made the MSADCS.DLL
entry for me on the working servers. There was no Visual Studio on the
non-working
servers.

HOWEVER... There are many other things I had to fix as well.

Here's my current checklist of thing that must be done right...
Plus (included in this same list), things that don't matter but I think they
do...
(I refer to the latter items as my voodoo roosters feet. Brian, please
tweak this
list if you have the time!)

1. In my VB6 program, I use ADO 2.8 (i.e., reference MDAC 2.8), but I
believe most other versions would work as well.

In my VB6 program, I open an ADODB.Connection thus...
cnMyAdodbConnection.ConnectionString = _
"Provider=MS Remote;" + _
"Data Source=" + m_strDataSource + ";" + _
"Remote Server=" + m_strDataServer
cnMyAdodbConnection.Open


or thus...

cnMyAdodbConnection.Open "Provider=MS Remote;" + _
"Data Source=" + m_strDataSource + ";" + _
"Remote Server=" + m_strDataServer

where m_strDataSource is the name of the ODBC System DSN which
points to my data source, an Access 2000 mdb file, and m_strDataServer
which says something like http://10.0.0.1 where the System DSN is
defined.

DO _NOT_ define a remote handler or remote provider for the simple RDS
application! If you specify the MSJet 4.0 OLEDB provider as the remote
provider, then the data source is the file path ON THAT SERVER. Seems
better to specify OLEDB rather than ODBC, but if you do, I think you
will
not be able to call parameterized queries (all queries?) SAVED in the
mdb file.

2. Go to the Start/Run window and enter msdfmap.ini. Make sure you have
fixed-up the following items exactly as shown here:

[connect default]
;If we want to disable unknown connect values, we set Access to
NoAccess
; Access=NoAccess
Access=ReadWrite

[sql default]
;If we want to disable unknown sql values, we set Sql to an invalid
query.
; Sql=" "

3. Make sure the correct ADC and RDS DF registry entries are present. You
need these even if you do not explicitly invoke RDS objects in your VB6
code.

First, there're the ADCLaunch entries...


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLa
unch]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLa
unch\AdvancedDataFactory]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLa
unch\RDSServer.DataFactory]

Then there're the RDS Data Factory entries...

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo]
"HandlerRequired"=dword:00000000
"DefaultHandler"=""
"DisableAutoSafe"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerLi
st]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerLi
st\MSDFMAP.Handler]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerLi
st\MSDFMAP_VB.Handler]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerLi
st\MSDFMAP_VC.Handler]

4. Make sure you have a VIRTUAL root in the Default Web Servers tree. It
needs
to point to the "c:\program files\common files\system\msadc" directory
and have
Read permitted in the web root setup on IIS. You do not need a default
document,
or directory browsing, or write permitted, or execution of scripts
enabled. This is
critical on Win2k Server. I don't know what impact it has on "Win3k"
IIS, but I
have run out of time to test every little thing.

And, as Brian pointed-out, in Win 2003 you need an "IIS Web Service"
enabled that
turns-on the "c:\program files\common files\system\msadc\msadcs.dll"
file. This will be
missing from most systems that do not have a Visual InterDev (Visual
Studio) installed.

Finally, the "c:\program files\common files\system\msadc" directory and
its contents
need to have NTFS security to permit access by the "IUSR_myservername"
user
account. This is regardless of Win2k, Win3k, etc.

5. And here's the secret requirement for MDB files in RDS! You need NTFS
security
to permit read/write/change/modify access by the IUSR_myservername user
account
on the directory where the DSN will go to get to the mdb file.
Furthermore, this
security must be made to propagate to all objects in this directory so
the LDB lock
file will have proper security. Otherwise you will get an error saying
it is LOCKED
exclusively by another user.

WARNING: You must assure that others who maintain this database don't
write
over the mdb file with an "updated" copy that breaks these permissions.
The
published procedure for maintaining this database must spell-out
checking these
NTFS file permissions for the entire directory and it contents.
Post by Joseph K. Cobb
Unfortunately the W2K working version is still the production one. I was
unable to get it to work on the one we were looking at in the previous
thread, so I took your advice and had the NETS people get me another server
to use. I think just to complicate things, the NETS group gave me access to a
2003 server, so now even more variables are involved. A little after posting
this message I did find the information on the Web Service Extensions, and
Internet Server Error: Cannot Connect to Server
Err Num -2147012889 Source = Remote Data Service 2.0
The method I'm calling is a simple return true with no other code, so no Db
connections should not be involved.
I'm beginning to wonder if the MDAC versions, and therefore the RDS
versions, need to match. That's the only sig difference between the three
machines. My Dev machine is running 2.7. The first 2K box has 2.6, and of
course the 2K3 one is 2.8. The .dll I'm using has no reference to RDS
dataspace so the only place I'm using RDS is from the remote machine running
the application. Both the .dll and the app, however, have reference to ADO
2.7.
I've double-checked the perms and, since its an internal machine, I've set
them much less restrictive than is required. Is there a certain user I should
use for the permissions? I've tried the IUSR and myself with not luck. How
about anon for login?
I really appreciate the help, and maybe if we figure something out, it will
prevent others from this headache :-).
Thanks
Post by Brian Muth
BTW, I see you got it working in the Win2000 world.
What was the problem (that you solved)?
Brian
Loading...