472,328 Members | 1,763 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,328 software developers and data experts.

Database Replication A97 vs A2003

I developed 3 different replicated database applications in MS Access for 3
different corporate clients in Access 97 several years ago to enable data to
be shared across wide area networks. I observed 2 issues that plagued all 3
systems.

1. the database files continually became corrupt during synchronization.
Most times this was easily fixed via a repair and compact, but the frequency
with which this occurred was of concern, and occasionally the file would not
respond to a repair and would have to be rebuilt.

2. the conflict logs continually swell with bogus conflict records.

Based on this I tended to avoid recommending that any other clients develop
a system using replicated access databases. However I have recently been
approached by a client interested in converting an existing application to a
replicated system. This system is in Access 2003. Does anyone have any
experience in replicating A2003 databases? Has MS improved this at all
between 97 and 03?


Nov 13 '05 #1
1 1708
"Andrew Chanter" <he****@radsolutions.com.au> wrote in
news:O%*******************@news-server.bigpond.net.au:
I developed 3 different replicated database applications in MS
Access for 3 different corporate clients in Access 97 several
years ago to enable data to be shared across wide area networks.
I observed 2 issues that plagued all 3 systems.

1. the database files continually became corrupt during
synchronization. Most times this was easily fixed via a repair and
compact, but the frequency with which this occurred was of
concern, and occasionally the file would not respond to a repair
and would have to be rebuilt.

2. the conflict logs continually swell with bogus conflict
records.
Bogus? In what sense? They may look identical to *you*, but to Jet,
they aren't. Remember, Jet replication uses most-edited record (in
Jet 3.5, which is what was available in A97) to determine which
record wins when there is a tie between the records. In Jet 4 (A2K
and higher), this operates at the field level, but is still based on
most changes.

To put it another way, say this is the history:

Generation Replica 1 Replica 2
1 Value1 Value1
2 Value 1
3 Value1

Now, from a human point of view, the final state of the two records
is identical, as "Value1" = "Value1". But that's not the way it
works -- because Replica 1 has a higher generation number, it wins.

Now, assume you had an equal number of changes in both replicas
(which is what is required to have a conflict show up), and both
ended up with "Value1" as the end data value. To *you* there's
nothing to resolve, as the data in the fields is identical, but Jet
can't know that. To it, there have been 3 changes on both sides, and
it needs to ask a human being to fix it.

My guess is that you have an application that is saving records more
often than it needs to do so (each save is a generation, even if the
data hasn't been altered). The first thing to do is to check your
application to see if you have code that is saving records without
first checking if the record needs to be saved. The easiest way to
do this is to replace any code that saves records with this:

If Me.Dirty Then Me.Dirty = False

That will only save the record if it has been edited.

Now, if you have code that happens to be somehow writing data that
is unchanged (say, writing "Value1" into a field whose existing
value is already "Value1"), then you need to eliminate that as well.

I have never seen a properly designed replicated application that
was suitable for replication in the first place (i.e., a single
record under normal usage is only very rarely edited in more than
one replica) that produces very many conflicts. So my guess is that
your application has a design flaw that is producing these
conflicts, especially since from a human standpoint, the conflicting
records are identical.

(also, make sure your application is split, and don't under *any*
circumstances replicate the front end -- this can lead to all kinds
of conflicts and problems that very often lead to the loss of the
whole replicated project to corruption; additionally, make sure
you're not emailing or copying replicas around -- that's a
non-supported scenario destined to corrupt your replica set
eventually, or, at the very least, leave you with replicas that you
can't guarantee have the same data in them)
Based on this I tended to avoid recommending that any other
clients develop a system using replicated access databases.
However I have recently been approached by a client interested in
converting an existing application to a replicated system. This
system is in Access 2003. Does anyone have any experience in
replicating A2003 databases? Has MS improved this at all between
97 and 03?


I don't use replication any more except in one scenario, when there
are laptop users who have to work in the field and edit/add data
without a live Internet connection. For all remote users who can be
connected to the Internet, I host the application on Windows
Terminal Server.

In the laptop situation, if the users can wait to get back to the
office to synch with the mother ship, then they can do it with
simple direct replication (connected via LAN). If they need to synch
from their remote location, then you need to use dialup (for
indirect replication) or Internet (for Internet replication; though
if you can set up a VPN and connect to the home network via WAN, you
can use indirect replication).

Indirect replication is tricky to set up and keep running.

Internet replication is almost impossible to set up and keep running
(according to reports I've seen from people who've tried it), and I
would never consider it as it has a built-in dependency on IIS,
which I will not allow any my clients to run (at least, where I have
any say in the matter; I certainly will never recommend any
application that requires it!).

In terms of your question about improvements, replication was vastly
improved with the introduction of Jet 4 along with Access 2000. What
you got was two really major improvements:

1. field-level conflict resolution (instead of record-level)

2. elimination of data errors (they are treated as mere conflicts,
which makes them much easier to resolve).

--
David W. Fenton http://www.bway.net/~dfenton
dfenton at bway dot net http://www.bway.net/~dfassoc
Nov 13 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: smahler | last post by:
Hi all, Here is my situation. I have an application that uses SQL 2000. The client has a program that uses MSDE. The client MUST have the MSDE...
0
by: Markus Enders | last post by:
Hi everybody, we are using version 7 of db2 and need to replicate a database. We are using two web-based systems, which access two different...
6
by: tdmailbox | last post by:
I developed an access database in access 2003(keeping my database in the access 2000 format). It has been fully tested to be access 2000...
2
by: Terry Bell | last post by:
My client has an A97 application, been running for 7 years, split front/backend. They backup each night and sometimes half way through each day. ...
18
by: Asif | last post by:
Hi all, I am working on portal which is using MS Access 2003 database. The problem that I am facing is that once I received data from vendors I...
8
by: rdemyan via AccessMonster.com | last post by:
I've converted my application from A2K format to A2003 format. I tried to follow Allen Browne's protocol in getting my app into A2003 (although I...
3
by: John Morgan | last post by:
I have my first small SQl Server 2005 database developed on my local server and I have also its equivalent as an online database. I wish to...
1
by: aine_canby | last post by:
Hi, My company has an old access database which has been in use for many years now by a few employees. I need to make some design changes to one...
2
by: Query Builder | last post by:
Hi, I have transactional replication set up on on of our MS SQL 2000 (SP4) Std Edition database server Because of an unfortunate scenario, I...
0
by: tammygombez | last post by:
Hey fellow JavaFX developers, I'm currently working on a project that involves using a ComboBox in JavaFX, and I've run into a bit of an issue....
0
by: tammygombez | last post by:
Hey everyone! I've been researching gaming laptops lately, and I must say, they can get pretty expensive. However, I've come across some great...
0
by: teenabhardwaj | last post by:
How would one discover a valid source for learning news, comfort, and help for engineering designs? Covering through piles of books takes a lot of...
0
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and...
0
by: CD Tom | last post by:
This happens in runtime 2013 and 2016. When a report is run and then closed a toolbar shows up and the only way to get it to go away is to right...
0
by: CD Tom | last post by:
This only shows up in access runtime. When a user select a report from my report menu when they close the report they get a menu I've called Add-ins...
0
by: Naresh1 | last post by:
What is WebLogic Admin Training? WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge...
0
by: Matthew3360 | last post by:
Hi there. I have been struggling to find out how to use a variable as my location in my header redirect function. Here is my code. ...
1
by: Matthew3360 | last post by:
Hi, I have a python app that i want to be able to get variables from a php page on my webserver. My python app is on my computer. How would I make it...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.