The following pseudo-code shows the available events and the point at which each is called during the synchronization process. For example, sp_hook_dbmlsync_abort is the first event hook to be invoked.
Each hook is provided with parameter values that you can use when you implement the procedure. In some cases, you can modify the value to return a new value; others are read-only. These parameters are not stored procedure arguments. No arguments are passed to any of the event-hook stored procedures. Instead, arguments are exchanged by reading and modifying rows in the #hook_dict table.
For example, the sp_hook_dbmlsync_begin procedure has a MobiLink user parameter, which is the MobiLink user being synchronized. You can retrieve this value from the #hook_dict table.
Although the sequence has similarities to the event sequence at the MobiLink server, there is little overlap in the kind of logic you would want to add to the consolidated and remote databases. The two interfaces are therefore separate and distinct.
If a *_begin hook executes successfully, the corresponding *_end hook is called regardless of any error that occurred after the *_begin hook. If the *_begin hook is not defined, but you have defined an *_end hook, then the *_end hook is called unless an error occurs prior to the point in time where the *_begin hook would normally be called.
If the hooks change data in your database, all changes up to and including sp_hook_dbmlsync_logscan_begin are synchronized in the current synchronization session; after that point, changes are synchronized in the next session.
sp_hook_dbmlsync_abort sp_hook_dbmlsync_set_extended_options loop until return codes direct otherwise ( sp_hook_dbmlsync_abort sp_hook_dbmlsync_delay ) sp_hook_dbmlsync_abort // start synchronization sp_hook_dbmlsync_begin // upload events for each upload segment // a normal synchronization has one upload segment // a transactional upload has one segment per transaction // an incremental upload has one segment per upload piece sp_hook_dbmlsync_logscan_begin //not called for scripted upload sp_hook_dbmlsync_logscan_end //not called for scripted upload sp_hook_dbmlsync_set_ml_connect_info //only called during first upload sp_hook_dbmlsync_upload_begin sp_hook_dbmlsync_set_upload_end_ progress //only called for scripted upload sp_hook_dbmlsync_upload_end next upload segment // download events sp_hook_dbmlsync_validate_download_file (only called when -ba option is used) for each download segment sp_hook_dbmlsync_download_begin for each table sp_hook_dbmlsync_download_table_begin sp_hook_dbmlsync_download_table_end next table sp_hook_dbmlsync_download_end sp_hook_dbmlsync_schema_upgrade // end synchronization sp_hook_dbmlsync_end sp_hook_dbmlsync_process_exit_code sp_hook_dbmlsync_log_rescan
For more information about upload options, see -tu option and Increment (inc) extended option.