Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
指定远程数据库上的每个事务都应在一次同步中作为一个单独的事务上载。
dbmlsync -tu ...
使用 -tu 时,将创建事务性上载:dbmlsync 将远程数据库上的每个事务作为不同的事务上载。接收到事务后,MobiLink 服务器分别应用和提交每个事务。
使用 -tu 时,远程数据库上的事务的顺序始终在统一数据库上保留。不过,事务中的操作顺序可能不会保留,原因有两个:
MobiLink 始终根据外键关系应用更新。例如,当数据在子表和父表中更改后,MobiLink 会将数据先插入父表然后再插入子表,但会先从子表删除数据然后再从父表删除数据。如果您的远程操作不遵循此顺序,则统一数据库上的操作顺序会有所不同。
事务中的操作将被合并。这表示,如果在一个事务中将同一行更改三次,则仅上载行的最后形式。
如果事务性上载中断,则未发送的数据将被发送到下一个同步。通常,此时只发送未成功完成的事务。有时(例如,首次同步预订期间发生上载失败时),dbmlsync 将重新发送所有事务。
不使用 -tu 时,MobiLink 会将远程数据库上的所有更改合并到上载中的一个事务内。这表示,如果在两次同步之间将同一行更改三次,则无论远程事务数有多少,仅上载行的最后形式。此缺省行为在许多情况下都是有效和理想的。
不过,在某些情况下,您可能希望在统一数据库上保留远程事务。例如,您可能希望在统一数据库上定义触发器,当这些触发器在远程数据库中触发时,会对事务进行处理。
另外,将上载划分为较小的事务有诸多优点。许多统一数据库已经过了优化处理,适用于小型事务,所以发送非常大的事务时,效率不会高或导致太多争用。同时,使用 -tu 时,如果在上载过程中发生通信错误,可能不会丢失整个上载。使用 -tu 且发生上载错误时,所有成功上载的事务都将得以应用。
-tu 选项使 MobiLink 的行为模式非常接近 SQL Remote。主要差别在于 SQL Remote 会将所有更改以其发生顺序复制到远程数据库中,它不进行合并。要模拟此行为,必须每次在远程数据库上执行数据库操作后进行提交。
-tu 不可与 Increment 扩展选项或脚本式上载结合使用。