locked
updates are not pushed from SQL Server 2008 to SQL CE 3.5 using Microsoft Sync RRS feed

  • Question

  • Hi

    I am using Sync frame work with Download only Option from sql server 2008 - SQL SERVER CE 3.5

    For past 2 days Sync is not updating records in  SQL CE 3.5 that was updated in sql server 2008.

    This was working previously. Stopped updating for past 2 days.

    When i try to delete SDF File and re-create it  a new sdf file is created  and i could see the records   

    My code is as below

    SyncAgent sampleSyncAgent = new SyncAgent(syncTables, false);

    SyncStatistics syncStatistics = sampleSyncAgent.Synchronize();

    IN SyncAgent  class i have code as below in the constructor    

                 this.LocalProvider = new ClientSyncProvider();
                this.RemoteProvider = new ServerSyncProvider(tablestoSync, pBatchSync);
                SyncGroup syncGroup = new SyncGroup("ABC");;

    foreach (var tables in tablestoSync )

    {

      SyncTable syncTable = new SyncTable(tables.Tablename);
                    syncTable.CreationOption = TableCreationOption.DropExistingOrCreateNewTable; //UseExistingTableOrFail; // 
                    syncTable.SyncDirection = SyncDirection.DownloadOnly;
                    syncTable.SyncGroup = syncGroup;
                    this.Configuration.SyncTables.Add(syncTable);

    }

    This   was previously working but suddenly stopped syncing. 

    Friday, January 11, 2013 2:13 PM

Answers

  • not sure why you're checking for ChangesApplied inside ChangeSelected event.... the changes have just been selected, they have yet to be applied.

    you should be checking what has been applied in the ChangesApplied event.

    anyway, try running SQL Profiler and see what anchor value is being passed to the SelectIncremental commands.

    • Marked as answer by Chillu-B Wednesday, January 16, 2013 9:29 PM
    Wednesday, January 16, 2013 12:52 AM

All replies

  • this is a duplicate of this other thread: http://social.msdn.microsoft.com/Forums/en-US/syncdevdiscussions/thread/49ddd3f5-6834-4a14-81dd-7737cdc5c0fd

    have you tried subscribing to the ChangesSelected event to verify if it's actually finding the changes?

    or subscribing to he ApplyChangeFailed event to see if its encountering issues applying the change?

    have you made any changes on the server? database restore?

    Monday, January 14, 2013 1:00 AM
  • Hi JuneT

    Yes i have Subscribed to ChangesSelected && ApplyChangeFailed . 

           Updates Count  is showing Zero though  there are Updates in Database server.

            public void SampleServerSyncProvider_ChangesSelected(object sender, SyncProgressEventArgs args)
            {
                try
                {
                    string message = "";
                    switch (args.SyncStage)
                    {
                        case SyncStage.ApplyingInserts:
                            message += "Applying insert for table: " + args.TableMetadata.TableName;
                            message += "[" + args.TableProgress.Inserts.ToString() + "|" + args.TableProgress.Updates.ToString() + "|" + args.TableProgress.Deletes.ToString() + "]";
                            message += "(Applied:" + args.TableProgress.ChangesApplied.ToString() + "/Pending:" + args.TableProgress.ChangesPending.ToString() +
                               "/Failed:" + args.TableProgress.ChangesFailed.ToString() + "/Total:" + args.TableProgress.TotalChanges.ToString() + ")";
                            break;

                        case SyncStage.ApplyingUpdates:
                            message += "Applying update for table: " + args.TableMetadata.TableName;
                            message += "[" + args.TableProgress.Inserts.ToString() + "|" + args.TableProgress.Updates.ToString() + "|" + args.TableProgress.Deletes.ToString() + "]";
                            message += "(Applied:" + args.TableProgress.ChangesApplied.ToString() + "/Pending:" + args.TableProgress.ChangesPending.ToString() +
                                "/Failed:" + args.TableProgress.ChangesFailed.ToString() + "/Total:" + args.TableProgress.TotalChanges.ToString() + ")";
                            break;

                        case SyncStage.ApplyingDeletes:
                            message += "Applying delete for table: " + args.TableMetadata.TableName;
                            message += "[" + args.TableProgress.Inserts.ToString() + "|" + args.TableProgress.Updates.ToString() + "|" + args.TableProgress.Deletes.ToString() + "]";
                            message += "(Applied:" + args.TableProgress.ChangesApplied.ToString() + "/Pending:" + args.TableProgress.ChangesPending.ToString() +
                                "/Failed:" + args.TableProgress.ChangesFailed.ToString() + "/Total:" + args.TableProgress.TotalChanges.ToString() + ")";
                            break;

                        case SyncStage.GettingInserts:
                            message += "Enumerating inserts for table: " + args.TableMetadata.TableName;
                            message += "[" + args.TableProgress.Inserts.ToString() + "|" + args.TableProgress.Updates.ToString() + "|" + args.TableProgress.Deletes.ToString() + "]";
                            break;

                        case SyncStage.GettingUpdates:
                            message += "Enumerating updates for table: " + args.TableMetadata.TableName;
                            message += "[" + args.TableProgress.Inserts.ToString() + "|" + args.TableProgress.Updates.ToString() + "|" + args.TableProgress.Deletes.ToString() + "]";
                            break;

                        case SyncStage.GettingDeletes:
                            message += "Enumerating deletes for table: " + args.TableMetadata.TableName;
                            message += "[" + args.TableProgress.Inserts.ToString() + "|" + args.TableProgress.Updates.ToString() + "|" + args.TableProgress.Deletes.ToString() + "]";
                            break;
                    }
                    //System.Diagnostics.Debug.WriteLine(message);
                }
                catch (Exception ex) { }
            }

     

    Tuesday, January 15, 2013 9:15 PM
  • not sure why you're checking for ChangesApplied inside ChangeSelected event.... the changes have just been selected, they have yet to be applied.

    you should be checking what has been applied in the ChangesApplied event.

    anyway, try running SQL Profiler and see what anchor value is being passed to the SelectIncremental commands.

    • Marked as answer by Chillu-B Wednesday, January 16, 2013 9:29 PM
    Wednesday, January 16, 2013 12:52 AM
  • Hi JuneT

    After running profiler i came to know i was missing below line from my code. 

    tableBuilder.UpdateTrackingColumn = "SqlCeUpdateID";

    Now Updates correctly pushed


    • Edited by Chillu-B Wednesday, January 16, 2013 9:33 PM
    Wednesday, January 16, 2013 9:33 PM