Unanswered: How to coordinate Replication with another application?
We want to use Replication in a system where the Design Master will reside on one machine (the "Admin Station") with a GUI for the user to make system configuration changes, and then replicate the changes to another machine (the "System Host") which controls things using the data in the now-replicated database.
I know how to do that, but the crucial question is this. The Host is running other programs all the time, and querying the replicated database for configuration information, etc. We can't have the customer make a change over on the Admin Station and click the button to replicate over to the Host and have a conflict with a query that might be happening at that time on the Host. Or the other way, if the replication is in progress, and the Host tries to do a query, it would throw an exception, I would expect.
I've read through the article at Microsoft, looking for some way to programmatically control the use of the database, but I don't see the answer. I want the replication process to be able to signal its state to any other application trying to open a connection, to say "Wait, please, replication in progress" and also the replication should know if there is a query going on and wait till it's over before starting the replication.
Maybe it's not such a problem. I wrote a couple of little test apps, one for the Admin Station, a button that calls for a synchronization to the Host, and another on the host with a button that submits a query to the replicated database on the Host. I started the synchronization, which turns out to take 5 to 10 seconds, and then started peppering the replicated database with queries. Only one out of many would throw an Exception saying there was a locking problem. So conflicts would be at the table level only? That would be pretty rare in reality, I would think, and can be caught and the query resubmitted until it completes? That seems OK