Does the sync need to happen in real time? Does the offline desktop client have to be involved in the sync process? I would say you could use SSIS to just keep the 2 databases in sync.
Another option could be in your online database you could setup triggers (or change tracking) and then just have you desktop client query that table to see what changes have happened and then sync those to the offline database.
Does that help at all?