Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92216978
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Sybase

2008-04-10 21:00:46

  来源:赛迪网    作者:bosinvhai

对于上载和下载来说,都是通过一些在中心数据库的事件来实现的。这些典型的事件包括:

upload_insert事件

upload_update事件

upload_delete事件

download_cursor事件

等等。

在这里我们仅介绍这几个事件。

对于upload开头的,肯定都是上载事件了。当远程服务器(rem1)和中心服务器(con1)通过MobiLink连接的时候,也就是MobiLink客户端与MobiLink服务器连接了之后,MobiLink客户端根据发布定义创建上载流。

如果在同步与同步期间,符合发布定义的数据有了改变,这些改变后的数据就会包含在上载流中。上载流通过MobiLink到达中心服务器,进而通过upload_insert, upload_update和upload_delete事件控制这些数据的走向。

比如,在这个例子中,我们可以在dbisql下,分别应用ml_add_table_script存储过程来完成对三个事件的定义:

call ml_add_table_script( 'demo1', 'employee', 
'upload_insert','INSERT INTO employee( empno, 
empname, deptno) VALUES (?, ?, ?)') 

call ml_add_table_script('demo1', 'employee', 
'upload_update', 'UPDATE employee SET deptno=?, 
empname=? WHERE empno=?') 

call ml_add_table_script('demo1', 'employee',
 'upload_delete', 'DELETE employee WHERE empno=?')

这样的话,上载上来的数据就可以按照这三个事件的要求进入中心数据库了。当然,你可以根据自己的要求改变这三个事件中的SQL语句。demo1作为版本编号来讲非常重要,他要与客户端的订阅中的版本号一致。

然后,上载完成了。MobiLink服务器就会根据download_cursor事件的要求来组织下载,下载的数据传到MobiLink客户端后会应用到远程数据库。

call ml_add_table_script('demo1', 'employee', 
'download_cursor', 'SELECT empno, empname, 
deptno FROM employee')

这条语句定义了download_cursor事件,这个事件中的结果集将下载并应用到远程数据库。

所以,这样的话,整个同步的搭建工作就差不多了,接下来,我们就启动同步服务器并触发同步。

7.启动同步服务器

在cmd下

dbmlsrv9 -dl –v+ –zu+ -x 
tcpip -c "DSN=cons" –ot ml.txt

这样,MobiLink服务器就启动了,同时也不像简单的那个例子一样,它不支持自动生成脚本,因为脚本我们已经定义了。本命令在con1所在的计算机上执行。

触发同步:

在cmd下

DBMLSync –c "dsn=rem1" 
–v –dl  –o rem1.txt

本命令在rem1所在计算机上执行。这样的话呢,我们就从客户端触发了一次同步,对数据进行了同步。

在同步完成后,可以关闭DBMLSync所开启的窗口,把中心和远程的数据都更改一下,再次DBMLSync。

阅读(752) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~