分类: Sybase
2008-04-10 20:50:12
来源:赛迪网 作者:Sybase |
步骤清单:
上一部分,我们了解了MobiLink的大致工作机理,并且介绍了一些事件和事件内的脚本。上一部分中,有一个脚本是这样的:
它是为版本为demo2的脚本建立了一个对emp表下载时的命令,要求之下载符合deptno = '0001'的数据。但是我们来想象一个情况,我们往往都是喜欢灵活的一些SQL。例如,不同部门的人下载不同的数据,而且可能要求下载或者上传自上次同步以来的数据,即增量同步。这两种需求都可以通过我们的数据分区来实现。也就是说,我们把数据中心的数据按照一定的规则划分,每次只下载/上传部分数据。
在这一部分,我们先看如何将数据分区的第一部分:根据用户分区数据。
在很多事件里,尤其是表事件,都会有一个事件参数,叫ml_username。它是一个VARCHAR(128)的变量,MobiLink的用户名会传入该事件中,我们即可使用该变量以达到数据分区的效果。我们来看一个例子,例如download_cursor表事件,里面有两个事件参数,第一个是 last_download,TIMESTAMP数据类型;第二个参数是ml_username,VARCHAR(128)数据类型。这两个参数都可以在事件脚本中用?代替。同步时,MobiLink会将参数一一传送给?。所以,第一个?接收第一个参数,第二个?接收第二个参数。参看这个语句:
其中,?IS NOT NULL中的?是用来接收last_download这个参数的,所以这个?在这里只是占位符,没有实际意义;第二个问号,也就是deptno = ?是用来接收ml_username的。所以,在以上语句中,download_cursor仅会让deptno符合ml_username的数据下载。其他很多事件中都有这个参数。具体参考《MobiLink 同步技术用户指南》。
所以,在此之前,你可以建立一个用户,叫:
然后将该用户添加至MobiLink服务器端:dbmluser -c "dsn=center" -u 0002 -p abcdefg
在同步的时候,MobiLink服务器端不要开启-zu+开关,客户端触发同步时,分别用-u和-mp参数指定用户名和口令:
|