For better or worse, I've been emailing my replica for
editing and haven't seen any problems. Does your response mean
that they are some how accumulating in the background and I'm
working with a flawed database? Or would I know? Could I limp
along like this as I have no other solution at the moment for
working with my remote users? As long as I'm not compromising the
master, I can live with a little data loss from a replica, if it
happens. Please let me know as your email has me concerned.
You're creating dead replicas. As I explained it in a recent post:
A dead replica is a replica that no longer exists.
Here's how to create one:
1. create a replica. Say it's ReplicaID is 10.
2. email that replica to someone. They save the replica and use it.
As soon as they open it, its ReplicaID is changed to 11.
3. they email back a replica. when you open it, its ReplicaID is
changed to 12.
Now, keep in mind that from *your* point of view, there's one
replica here. Assuming you didn't delete the replica created in step
1, you have still have Replica 10. If you copy Replia 12 over top of
it, you've lost Replica 10 entirely -- it no longer exists.
Yet, if you look in the MSysReplicas table, there's still a line
there for each of these three replicas.
4. Now, if you synch Replica 12 with your home replica, your base
replica (call it Replica 1) now knows about Replia 11 and 12 in
addition to Replica 10 (which actually doesn't exist any longer).
5 So, email Replica 12 back, and your remote user saves it and opens
it. It now is changed to have ReplicaID 13, but it's been copied
over top of Replica 11, which now no longer exists.
So you have now lost Replica 10 and Replica 11.
6. If it is then emailed back to you and you save it over top of
Replica 12, you've now lost 10, 11 and 12, and when you open it, it
will be number Replica 14.
And so on and so forth.
Each email cycle casues you to create two dead replicas.
If there is some kind of problem in a synchronization that involves
the data in one of these dead replicas, you may be completely unable
to rectify that synchronization error until you clean up your
replica set and get rid of the dead replicas.
You can delete a replica from a replica set by attempting to synch
with it. This obviously won't work as long as there's a file with
the same name in the same location (regardless of what the ReplicaID
is). So, to delete a dead replica, rename the replica currently
occupying the dead replica's former location, try to synch with the
dead replica, and it you'll be informed that it's been deleted from
the replica set. Now, rename the replica back to the original name.
But when you llok, you'll see that the dead replica is still there
in the list of replicas.
You need to then synch around the full replica set.
Likewise, if you've had 10 dead replicas in the same location, you
need to attempt to synch with it 10 times before all 10 will be
deleted, and you may need to synch around the replica set several
times before the replica disappears from the list of replicas.
And if you still need a replica with that name in that location, it
can become even more difficult.
I think you get the point: dead replicas potentially screw up your
synchronization success and they are casued by copying or emailing
replicas. They are *very* hard to clean up once they've been
created, so it's important to avoid them in the first place.