If you have used replication with Jet 3.5, you may have received the error "Synchronization between replica
'<source replica>' and replica '<target replica>' failed. Two members of the replica set cannot be
synchronized because there is no common point to start the synchronization" described in
Q191916. This was one
of the most infamous of the Y2K bugs since it was not just related to the year 2000; instead, it was related to
any Jet 3.5 replica set that had maintenance done on it after the year 2000. Luckily, it was fixed in
Jet 3.5 Service Pack 3
but there always seems to be a catch, doesn't there?
In order to understand the problem, you have to understand what this service pack does: it installs all of the
bug fixes and changes to Jet 3.5 since it was originally shipped with Access 97. The files all come from the Jet
team, whose test team apparently runs the Jet Synchronizer from the ($WinSys) directory (where the rest of Jet 3.5
is placed). The ODE and runtime setups places certain key replication files in a slightly different location:
$(ProgramFilesDir)\$(CommonFilesDir)\Microsoft Shared\Replication Manager 3.5
Now, since the service pack was created by the Jet folks, the file is put in the ($WinSys) directory, and this
causes problems since the Jet Indirect (file system) Synchronization file (msrpfs35.dll) is now on the machine
twice: an older version in your Replication Manager directory, and a newer one in the system directory. Due to the
way that DLLs are loaded under Win32 (first the EXE dir, then the path), you will see a situation where ReplMan
and the Jet Synchronizer can be using a different version than Jet might be later! This leads to many potential
problems:
- Event ID 2009 errors in the Event Log on workstations (this error, described in
Q165815, is reported more
often on Server than Workstation/Professional but can happen on either)
- After one or a few successful indirect syncs, future indirect synchronizations will appear to hang with an "In
Progress" status, which does not resolve itself until the Synchronizer is stopped and restarted.
These two problems only hurt people who are using the Jet Synchronizer to do indirect synchronization, who are
coincidentally the only people who have a Replication Manager directory, anyway!
But you MUST install the service pack! So what do you to fix one bug without having the others?
Well, the workaround is quite easy: the msrpfs35.dll file that is installed to the ($WinSys) directory needs to
be moved to the Repliction Manager directory, above -- and deleted from the ($WinSys) directory. You do have to
shut down the Jet Synchronizer so the file will not be in use, but you can restart it right after copying the file
(no reboot is necessary).
Which brings us back to the title of this article -- if I go to a restaurant and get lousy service, I do not
leave as good of a tip; does this mean we should stiff them on the tip if we get a lousy service pack? ;-)