locked
Can my configuration benefit from Snapshot Initialization (SFx 2.1)? RRS feed

  • Question

  • I have 100+ SqlCe client PCs that sync to one SQL Server.  Each SDF has about 25 filtered tables (bidirectional) and 25 unfiltered tables (download only).

     

    Currently I build/deploy the SDFs by doing a full sync on each SDF then making it available to be download and copied onto a PC.  (FYI: it takes about 15+ hours to build 100 SDF files that average 200Mb each…)

     

    Can Snapshot Initialization (or another method) be implemented to speed my deployment?

     

    It is not clear from http://msdn.microsoft.com/en-us/library/dd937768.aspx#_db_snapshot how I would handle my filtered tables.

     

    Ideally I would create one SDF that is 100% provisioned except for the 25 bidirectional filtered tables … for these tables the SDF would have schema and metadata only – no data.  This +/- 100Mb file would be installed on each PC and sync’d on each PC so that each PC receives data matching it's filter.

    Thursday, July 28, 2011 8:50 PM

Answers

  • your approach is quite right in that you can create  a single snapshot SDF with the 25 unfiltered tables to be distributed to your 100+ clients. if your filtered rows is unique to each client, it doesnt make sense to create a snapshot for it. the best part about snapshots is you can use it to initialize multiple clients from a single copy.

    deployment wise, you saved time generating the initial SDFs.

    however, you havent mentioned the ratio of the number of rows or size of the filtered tables versus the unfiltered ones. another factor that will come into play is the speed of your connection to the server when each of the clients tries to sync and download the filtered rows.

    you may have saved time creating the initial SDF by just creating one snapshot. but your snapshot contains just a part of the data that you want initially on the SDFs. effectively, you just moved the burdened of initially populating the filtered rows to your clients.

    • Marked as answer by P H T Friday, July 29, 2011 12:39 PM
    Thursday, July 28, 2011 10:53 PM
  • The ratio is typically 50/50 ... and moving the burden is something I can accept ... though, it sounds like, should I retain full responsibility for SDF creation, I can save ~50% of the initial creation time if I create a snapshot and use it myself to create the other 99 files.

     

    Question: So, what does the actual process look like?  I assume it looks something like this:

    - Provision one sdf with all 3 of my scopes (... of which one is filtered)

    - Sync the 2 unfiltered scopes (the SDF created at this point is the file the link above refers to when it says "one client has been initialized using full initialization")

    - Use this SDF to create a new sdf (the SDF created at this point is the "snapshot" SDF)

    - To make my first production SDF (filtered for UserID=100 for example) ... I will use the file system to copy the "snapshot" SDF file to a new file I will name 100.SDF.

    - Do a full sync of all 3 scopes on 100.SDF (in my scenario, I will have to prompt for a user ID so I can tell my WCF service to use the scopes for for user 100).

     

    Am I understanding the process correctly?

    • Marked as answer by P H T Tuesday, August 2, 2011 12:22 PM
    Friday, July 29, 2011 1:09 PM

All replies

  • your approach is quite right in that you can create  a single snapshot SDF with the 25 unfiltered tables to be distributed to your 100+ clients. if your filtered rows is unique to each client, it doesnt make sense to create a snapshot for it. the best part about snapshots is you can use it to initialize multiple clients from a single copy.

    deployment wise, you saved time generating the initial SDFs.

    however, you havent mentioned the ratio of the number of rows or size of the filtered tables versus the unfiltered ones. another factor that will come into play is the speed of your connection to the server when each of the clients tries to sync and download the filtered rows.

    you may have saved time creating the initial SDF by just creating one snapshot. but your snapshot contains just a part of the data that you want initially on the SDFs. effectively, you just moved the burdened of initially populating the filtered rows to your clients.

    • Marked as answer by P H T Friday, July 29, 2011 12:39 PM
    Thursday, July 28, 2011 10:53 PM
  • The ratio is typically 50/50 ... and moving the burden is something I can accept ... though, it sounds like, should I retain full responsibility for SDF creation, I can save ~50% of the initial creation time if I create a snapshot and use it myself to create the other 99 files.

     

    Question: So, what does the actual process look like?  I assume it looks something like this:

    - Provision one sdf with all 3 of my scopes (... of which one is filtered)

    - Sync the 2 unfiltered scopes (the SDF created at this point is the file the link above refers to when it says "one client has been initialized using full initialization")

    - Use this SDF to create a new sdf (the SDF created at this point is the "snapshot" SDF)

    - To make my first production SDF (filtered for UserID=100 for example) ... I will use the file system to copy the "snapshot" SDF file to a new file I will name 100.SDF.

    - Do a full sync of all 3 scopes on 100.SDF (in my scenario, I will have to prompt for a user ID so I can tell my WCF service to use the scopes for for user 100).

     

    Am I understanding the process correctly?

    • Marked as answer by P H T Tuesday, August 2, 2011 12:22 PM
    Friday, July 29, 2011 1:09 PM
  • i think that's pretty much it.
    Tuesday, August 2, 2011 1:12 AM