MobiLink开发资源集之简单的数据同步

豆豆网   技术应用频道   2007年08月06日  【字号: 收藏本文

内容摘要:在本教程中使用的是 Adaptive Server Anywhere 远程数据库。统一数据库可以是使用 Sybase Adaptive Server Anywhere、Sybase Adaptive Server Enterprise、Oracle、Microsoft SQL Server 或 IBM DB2 生成的数据库。

  他将不进行用户验证(-zu+),也会自动生成同步脚本(-za)(因为在前面的步骤中我们没有建立同步脚本)。当然,MobiLink Server也将连接到中心数据库center。其他几个选项都是用于日志什么的。

  启动同步服务器后,可以在同步客户端上触发同步:

dbmlsync -c "dsn=remote" -o dbmlsync.out -v
-e "SendColumnNames=ON"

  当MobiLink服务器端未建立同步脚本时,需要指定SendColumnNames=ON,以便让MobiLink客户端发送列名,以便MobiLink服务器端自动生成同步脚本。其他选项用于日志、连接远程数据库等。

  在本部分的屏幕录像中,我们即展示了这种最简单的同步方式,没有用户验证,没有错误处理,没有冲突处理,服务器端自动生成同步脚本。如需要这些进一步的功能,请继续关注我们后续的内容。

  以下是屏幕录像中的全部脚本:

  脚本:

  命令行:

dbinit center.db
dbinit remote.db

  建立ODBC center & remote

  dbisql下,对center创建数据库模式:

CREATE TABLE dept(
deptno CHAR(4) NOT NULL PRIMARY KEY,
deptname VARCHAR(20))
CREATE TABLE emp(
empno INTEGER IDENTITY NOT NULL PRIMARY KEY,
empname VARCHAR(20),
gender BIT,
deptno CHAR(4) NOT NULL,
FOREIGN KEY (deptno) REFERENCES dept (deptno))

  对center添加数据:

INSERT INTO dept VALUES('0000', 'HQ')
INSERT INTO dept VALUES('0001', 'Sales')
INSERT INTO dept VALUES('0002', 'Marketing')
INSERT INTO dept VALUES('0003', 'Admin')
INSERT INTO dept VALUES('0004', 'Education')
INSERT INTO dept VALUES('0005', 'Presales')
INSERT INTO dept VALUES('0006', 'Support')
COMMIT
BEGIN
DECLARE @count INTEGER
SET @count = 1
WHILE (@count <= 2000)
BEGIN
INSERT INTO emp(empname, gender, deptno)
VALUES('PERSON' + STR(@count,4), MOD(@count, 2),
'000' + str(MOD(@count, 7),1))
SET @count = @count + 1
END
END

  对remote数据库:

CREATE TABLE dept(
deptno CHAR(4) NOT NULL PRIMARY KEY,
deptname VARCHAR(20))
CREATE TABLE emp(
empno INTEGER IDENTITY NOT NULL PRIMARY KEY,
empname VARCHAR(20),
gender BIT,
deptno CHAR(4) NOT NULL,
FOREIGN KEY (deptno)
references re_dept (deptno))

  建立publication:

CREATE PUBLICATION Lab_all
(
TABLE dept,
TABLE emp
)

  建立同步用户:

CREATE SYNCHRONIZATION USER "SIMPLE"

  建立SYNCHRONIZATION SUBSCRIPTION:

CREATE SYNCHRONIZATION SUBSCRIPTION TO Lab_all
FOR "SIMPLE"
TYPE 'TCPIP'
ADDRESS 'host=localhost;port=2439'
OPTION ScriptVersion='Lab01'

  命令行下:

  启动同步服务器:

dbmlsrv9 -c "dsn=center" -x tcpip -o
mlserver.mls -v+ -dl -za -zu+

  触发同步:

dbmlsync -c "dsn=remote" -o dbmlsync.out
-v -e "SendColumnNames=ON"

责编:豆豆技术应用

正在加载评论...