MobiLink behavior changes

The following is a list of behavior changes from previous versions of the software.

  • dbmlsync option -i and extended option SiteScriptName are no longer supported   dbmlsync -i and dbmlsync -e sc are no longer supported. They are replaced with a new hook called sp_hook_dbmlsync_schema_upgrade.

    See sp_hook_dbmlsync_schema_upgrade.

  • Download acknowledgement is now OFF by default   For Adaptive Server Anywhere remotes, the SendDownloadAck extended option now defaults to OFF. For UltraLite remotes, the send_download_ack field of the ul_synch_info struct now defaults to ul_false.

    When you upgrade to version 9, you must explicitly set this option On if the application depends on knowing that the remote has applied a download before the commit of the download transaction. See:

  • Some dbmlsync hooks may not work by default on Windows CE devices   The dbmlsync extended option LockTables has been modified to allow you to specify whether tables are locked in shared mode or exclusive mode. The default setting for LockTables, ON, continues to lock tables in shared mode for all platforms other than Windows CE. However, on Windows CE devices, ON now means that tables are locked in exclusive mode. This change provides significant performance enhancements for Windows CE applications.

    The dbmlsync event hooks sp_hook_dbmlsync_download_com_error, sp_hook_dbmlsync_download_fatal_sql_error, and sp_hook_dbmlsync_download_log_ri_violation are all executed on separate connections. They will not be able to execute correctly if they attempt to access any synchronization tables that are locked in exclusive mode. If your deployment uses any of these hooks on Windows CE, you may need to set LockTables to SHARE. See:

  • MobiLink server error codes   The MobiLink server now provides more information about errors. All MobiLink server error codes are less than -10000, starting at -10001. For dbmlsync, the error appears in the GUI and the output file. For UltraLite, the error is available as a string in the ul_synch_info struct.

    See MobiLink server error messages.

  • Upload cursors deprecated   The following scripts are deprecated: upload_cursor, new_row_cursor, and old_row_cursor. You should use statement-based scripts for the upload stream.

    See Writing scripts to upload rows.

  • -zac and -zec deprecated   The MobiLink server options for generating cursor-based scripts, -zac and -zec, have been deprecated.

  • -zd removed   The MobiLink server option -zd, which caused the last_download timestamp to be passed last, has been removed. This parameter is now always passed first.

  • mlxtract deprecated   The mlxtract utility is deprecated.

    See Creating a remote database.

  • end_synchronization scripts always called   Prior to version 9.0, the end_synchronization script might not be called if synchronization failed. Now, the script is always called if a begin_synchronization script is called. This means that any cleanup activities you have placed in the end_synchronization script will be performed regardless of whether the synchronization was successful.

    In addition, end_synchronization scripts have a new parameter, sync_ok, that indicates whether the synchronization was successful (1), or failed (0).

    See end_synchronization connection event and end_synchronization table event.

  • Stream DLLs and shared objects renamed   The names of stream DLLs and shared objects have been changed to improve consistency with Adaptive Server Anywhere. The following table details the changes:

    Old name New name
    dbhttp9 dbmlhttp9
    dbhttps9 dbmlhttps9
    dbjrsa9 dbmljrsa9
    dbjtls9 dbmljtls9
    dbrsa9 dbmlrsa9
    dbsock9 dbmlsock9
    dbtls9 dbmltls9

    See Deploying MobiLink applications.

  • ScoutSync no longer supported   ScoutSync is no longer supported.

  • Schema information no longer reloaded at each synchronization   Prior to version 9.0, dbmlsync reloaded schema information from the database before each synchronization. It now reloads schema information only at dbmlsync startup. You can revert to the old behavior using the dbmlsync -sc option. If you do not use -sc, dbmlsync should be shut down before any schema changes are made to remote databases. Making schema changes without shutting down dbmlsync could lead to synchronization errors or other unexpected behavior.

    See -sc option.

  • Synchronization now aborts if key scripts are missing   Prior to version 9.0, synchronization would continue even if certain scripts were missing that might result in the loss of data. MobiLink now aborts in this instance. You can use the dbmlsrv9 -fr option to cause an error to be generated instead of failure.

    See -fr option.

  • keep_alive synchronization parameter is removed   The keep_alive synchronization parameter for TCP/IP and HTTP protocols is no longer valid; in effect it is now always set to ON. This was previously the default setting. To control liveness for TCP/IP connections, you can use the liveness_timeout parameter.

    See the liveness_timeout parameter in CommunicationAddress (adr) extended option or -x option.