Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » UltraLite 用作 MobiLink 客户端 » UltraLite 客户端 » 设计 UltraLite 中的同步

 

向 UltraLite 应用程序添加同步

在 UltraLite 中,同步首先打开通过配置的通信流(也称为网络协议)进行的与 MobiLink 服务器之间的特定连接。除了对直接网络连接的同步支持之外,Palm OS 设备还支持 HotSync 同步,Windows CE 设备还支持 ActiveSync 同步。

定义连接

与 MobiLink 服务器同步的每个 UltraLite 远程数据库都通过网络协议进行同步。使用同步流参数设置网络协议。支持的网络协议包括 TCP/IP、HTTP、HTTPS 和 TLS。对于所选择的协议,还需要提供用于定义其它必需连接信息(例如 MobiLink 服务器主机和端口)的流参数。

还必须通过 user_name 和版本参数提供 MobiLink 用户信息和同步脚本版本。

定义同步行为

可以通过设置不同的同步参数来控制同步行为。设置参数的方式取决于您所使用的特定 UltraLite 接口。

要考虑的重要行为包括:

  • 同步方向   缺省情况下,同步为双向。如果仅需要单向同步,则记得使用相应的 upload_only 或 download_only 参数。通过执行单向同步,可最大程度缩短所需的同步时间。另外,对于仅下载同步,不必在同步前提交对 UltraLite 数据库进行的所有更改。对同步中未涉及的表的未提交更改不会进行上载,因此,未完成的事务不会导致问题发生。

    若要使用仅下载同步,必须确保不在本地更改与下载重叠的行。如果有任何数据进行了本地更改,则 UltraLite 应用程序中的同步将失败,并出现 SQLE_DOWNLOAD_CONFLICT 错误。

  • 同步期间的并发更改   在上载阶段,UltraLite 应用程序可以用只读方式访问 UltraLite 数据库。在下载阶段,允许进行读写访问,但如果应用程序更改了下载随后试图要更改的行,则下载将失败并回退。可以通过设置 disable_concurrency 同步参数来禁用同步期间对数据的并发访问。

♦  向 UltraLite 应用程序添加同步代码
  1. 以同步信息结构字段的形式为会话提供所需的同步参数和协议选项。

    例如,使用 C/C++ API 时,通过在 ul_synch_info 结构中设置相应的值,向 UltraLite 应用程序添加同步:

    ul_synch_info info;       
           // define a sync structure named "info"
            ULEnableTcpipSynchronization( &sqlca );
           // use a TCP/IP stream
           conn->InitSynchInfo( &info );
           // initialize the structure
           info.stream = ULSocketStream();
           // specify the Socket Stream
           info.stream_parms= UL_TEXT( "host=myMLserver;port=2439"  );
           // set the MobiLink host information
           info.version = UL_TEXT( "custdb 11.0" );
           // set the MobiLink version information
           info.user_name = UL_TEXT( "50" );
           // set the MobiLink user name
           info.download_only =ul_true;
           // make the synchronization download-only
  2. 初始化同步。

    对于基于 TCP/IP 的直接同步,将调用 API 特定的同步函数。这些函数将返回一个布尔值,指明同步操作是成功还是失败。如果同步失败,可查看另一结构中的详细错误状态字段,以获取更多的错误信息。

    对于 HotSync 同步,必须使用 ULSetSynchInfo 函数,从而以参数形式提供 ul_synch_info 结构。这将 ul_synch_info 结构附加到当前数据库,以供用于随后的同步。

    对于 ActiveSync 同步,必须从 ActiveSync 提供程序捕获同步消息,并使用 DoSync 函数调用 ULSynchronize。

  3. 如果要向用户报告同步进度,可使用观察器回调函数。

    提示

    如果您的环境中的 DLL 因为其本身太大或网络连接不可靠而失败,您可能要实现断点续传下载。请参见处理失败的下载恢复失败的下载

另请参见