I’ve developed an application using the Microsoft Sync Framework 2.1 SDK and my current deployment method has been:
-
Make a backup of the unprovisioned database from a development machine and restore it on the server.
-
Provision the server followed by provisioning the client
-
Sync the databases
-
Take a backup of the synced database on the development machine and use that for the client installations. It is included in an InstallShield package as an SQL/Server backup that I restore on the client machine.
That works but on the client machine now I would also like to create a seperate test database using the same SQL/Server backup without doubling the size of the installation. That also works but of course because the client test version is no longer synced with the test version on the server it attempts to download all records which takes many hours over slower Internet connections.
Because integrity of the test database is not critical I’m wondering if there’s a way to essentially mark it as ‘up to date’ on the client machine without too much network traffic?
After looking at the way the tracking tables work I’m not sure this is even possible without causing other clients to either upload or download everything. Maybe there is an option to upload only from a client that I’ve missed? That would suit this purpose fine.
After further analysis of the data structures used by Sync Framework I determined there would be no acceptable way to achieve the result I was seeking without sending a significant of data between the client and server that would have approached what was required to do a ‘proper’ sync.
Instead I ended up including a seperate test database backup along with the deployment so that the usual PerformPostRestoreFixup could be performed followed by a sync in the normal manner the same as I was handling the live database.