locked
Client tables flagged as system tables after sync RRS feed

  • Question

  • After performing a synchronization on my compact database table the table gets flagged as a system table and I get the following exception message when I try to add/remove a column from the table:

     

    DDL operations are not allowed on system tables

     

    Has this issue been resolved?  What are the workarounds for this issue when my schema changes to accomodate new features in my application?

     

    TIA,

    Darrin

    • Moved by Max Wang_1983 Friday, April 22, 2011 7:46 PM forum consolidation (From:SyncFx - Microsoft Sync Framework Database Providers [ReadOnly])
    Friday, April 25, 2008 9:44 PM

Answers

  •  

    I have seen several posts in this forum talking about schema changes on the client side tables and some got exceptions when doing certain ddl operations. the following the allowed-disallowed ddl operations on the client db. hope this helps. for full reference please read on the sync services BOL: working with Table schema section:

    Schema Changes in the Server and Client Databases

    Sync Services does not automatically propagate schema changes from the server to the client. For information about how to handle schema changes on the server, see Deploying and Versioning Applications (Sync Services). The following schema changes are supported in the client database:

    • Drop tables. The behavior during the next synchronization depends on the value that you specified for CreationOption. If you do not want the table on the client at all, remove it from the SyncTableCollection. When you drop a table that has change tracking enabled, you also drop the system table that tracks delete operations for that table. Therefore, any delete operations since the last synchronization are not uploaded to the server.
    • Add new columns.
    • Drop columns for tables that are involved in snapshot synchronization. This change is not supported for other types of synchronization.
    • Add, drop, and rename indexes.
    • Add, drop, and rename primary keys and other constraints.
    • Modify defaults.

    All other changes are not supported and can cause synchronization failures.

    thanks

    Yunwen

    Tuesday, May 13, 2008 11:14 PM
    Moderator

All replies

  • Hi Darrin,

     

    what DDL you are trying to do ?

     

    this does sound like a bug. could you provide some more details here.

     

    thanks

    Yunwen

    Saturday, April 26, 2008 1:35 AM
    Moderator
  •  

    Using Visual Studio 2008, I followed the demo that uses an SOA design (with WCF) for synchronizing a compact edition database.  After performing a few synchronizations I wanted to remove a column from the client table.  Therefore, within Visual Studio 2008 Server Explorer I opened the designer for the compact edition database and attempted to delete a column from my table.  After clicking the OK button I received the DDL exception.

     

    The problem I am seeing is the same problem this person experienced but I was wondering if there has been a resolution implemented yet.  http://forums.microsoft.com/Sync/ShowPost.aspx?PostID=1472718&SiteID=75

     

     

    Let me know if you need more detailed information.  Thanks.

     

     

    Saturday, April 26, 2008 3:58 AM
  • Any word yet?  I thought I would reply since I got a "stale post" notice.  Thanks.

    Tuesday, April 29, 2008 4:10 AM
  • I have the exact same issue.  Has to be a bug.  It is really ticking me off.  I am at a stand still for now.

     

    Where can we post bug reports?? I can't remember...

     

    Monday, May 5, 2008 7:32 PM
  • Has anybody else experienced this?  Is this a bug?  If it is not a bug then do you have any workaround ideas?

     

    Thanks.

    Wednesday, May 7, 2008 9:54 PM
  • I have run into this and while I haven't found an easy solution, here are the steps I go through to rename or drop a column:

    1. Modify the table (rename or drop columns) on SQL Server.

    2. Open the Data Configuration Sync wizard and drop the table there and exit the wizard.

    3. Open the SSCE table in the VS2008 Server Explorer and right-click and drop the table there.

    4. Open the Sync wizard and add the table back.

    5. Open the SSCE table in VS2008 and add back any indices, contraints, relationships etc that aren't copied down.

     

     

    Thursday, May 8, 2008 7:12 PM
  • Thanks Syncor but this option will not be viable since I will need to do this in production and not in the development environment.  It could be done with code in production but it will be difficult since the table may (or may not) have foreign key relationships and the existing data in the table will need to be restored after dropping and recreating the table.

     

    We have an existing Compact Edition 3.5 database that was custom developed rather than through the Visual Studio 2008 "Local Data Cache" wizard.  We had to go this route since our client application relies upon referential integrity.  The wizard in VS2008 does not create any table relationships that exist on the server database.

     

    Any moderators have an answer yet?  Is this a bug?  We are deploying our synchronization processes within the next few weeks barring some issues being answered and workarounds developed if needed.

     

    Thanks,

    Darrin

    Thursday, May 8, 2008 7:32 PM
  •  

    I have seen several posts in this forum talking about schema changes on the client side tables and some got exceptions when doing certain ddl operations. the following the allowed-disallowed ddl operations on the client db. hope this helps. for full reference please read on the sync services BOL: working with Table schema section:

    Schema Changes in the Server and Client Databases

    Sync Services does not automatically propagate schema changes from the server to the client. For information about how to handle schema changes on the server, see Deploying and Versioning Applications (Sync Services). The following schema changes are supported in the client database:

    • Drop tables. The behavior during the next synchronization depends on the value that you specified for CreationOption. If you do not want the table on the client at all, remove it from the SyncTableCollection. When you drop a table that has change tracking enabled, you also drop the system table that tracks delete operations for that table. Therefore, any delete operations since the last synchronization are not uploaded to the server.
    • Add new columns.
    • Drop columns for tables that are involved in snapshot synchronization. This change is not supported for other types of synchronization.
    • Add, drop, and rename indexes.
    • Add, drop, and rename primary keys and other constraints.
    • Modify defaults.

    All other changes are not supported and can cause synchronization failures.

    thanks

    Yunwen

    Tuesday, May 13, 2008 11:14 PM
    Moderator