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

SQL Anywhere 11.0.1 (中文) » MobiLink - 入门 » MobiLink 教程 » 教程:将 MobiLink 与 Adaptive Server Enterprise 统一数据库结合使用

 

第 2 课:准备统一数据库

本教程使用缺省 sa 帐户连接到 pubs2 数据库。刚安装 Adaptive Server Enterprise 时,sa 帐户的口令为空。本教程假定您已将空口令更改为有效口令。有关在 Adaptive Server Enterprise 中更改空口令的详细信息,请参见 [external link] http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug894.htm

在本课中,将增加统一数据库的大小以进行 MobiLink 同步,同时创建唯一主键。

增加统一数据库的大小

MobiLink 需要向 pubs2 数据库添加系统表和其它对象,以便进行同步。为此,必须增大 pubs2 数据库的大小。

♦  增加统一数据库的大小
  1. 在 Adaptive Server Enterprise 中使用 isql 实用程序,以 sa 身份连接到 pubs2 数据库。在命令提示符处,运行以下命令(全部内容都输入到一行上):

    isql
    -U sa
    -P Your password for sa account
    -D pubs2

    如果正远程访问 Adaptive Server Enterprise,请使用 -S 参数指定服务器名称。

  2. 要获得增加数据库大小的适当权限,必须访问主数据库。在 isql 中运行以下命令:

    use master
  3. 在 Adaptive Server Enterprise 中,数据库存储在磁盘或磁盘的一个部分中。要增大 pubs2 数据库,请运行以下命令(必须指定存储 pubs2 的磁盘):

    ALTER DATABASE pubs2 ON disk name = 33
添加唯一主键

在同步系统中,表的主键是在不同数据库中唯一地标识行的唯一方式,也是检测冲突的唯一方式。正在协调的每一个表都必须具有一个主键。切勿对主键进行更新。同时必须确保已插入到一个数据库中的主键值不被插入到另一数据库。

可通过多种方法来生成唯一主键。为简便起见,本教程使用了复合主键方法。此方法使用在所有统一和远程数据库中唯一的多个列来生成主键。

♦  向统一数据库添加唯一主键
  1. 在 Adaptive Server Enterprise 中使用 isql 实用程序,以 sa 身份连接到 pubs2 数据库。在命令提示符处,运行以下命令(全部内容都输入到一行上):

    isql
    -U sa
    -P Your password for sa account
    -D pubs2

    如果正远程访问 Adaptive Server Enterprise,请使用 -S 参数指定服务器名称。

  2. 根据在步骤 5 中为 salesdetail 表创建的复合主键,以下几行并不是唯一的。为简化起见,请运行以下命令删除这些行:

    DELETE FROM salesdetail 
    WHERE stor_id = '5023' 
    AND ord_num = 'NF-123-ADS-642-9G3' 
    AND title_id = 'PC8888'
    
    DELETE FROM salesdetail 
    WHERE stor_id = '5023' 
    AND ord_num = 'ZS-645-CAT-415-1B2' 
    AND title_id = 'BU2075'
  3. 以下索引会妨碍在步骤 5 中创建主键。要删除这些索引,请运行以下命令:

    DROP INDEX authors.auidind
    DROP INDEX titleauthor.taind
    DROP INDEX titles.titleidind
    DROP INDEX sales.salesind
  4. 添加唯一主键。

    ALTER TABLE au_pix ADD PRIMARY KEY (au_id)
    ALTER TABLE authors ADD PRIMARY KEY (au_id)
    ALTER TABLE titleauthor ADD PRIMARY KEY (au_id, title_id)
    ALTER TABLE titles ADD PRIMARY KEY (title_id)
    ALTER TABLE discounts ADD PRIMARY KEY (discounttype)
    ALTER TABLE stores ADD PRIMARY KEY (stor_id)
    ALTER TABLE sales ADD PRIMARY KEY (stor_id, ord_num)
    ALTER TABLE salesdetail ADD PRIMARY KEY (stor_id, ord_num, title_id)

运行以上命令后,MobiLink 服务器将顺利地连接到统一数据库,并将其设置为可与任意数量的远程表进行同步。

注意

也可以与没有主键的统一数据库同步数据。但此时您必须记录您自己的作用于影子表的同步事件,以使用这些事件在其它表中唯一地标识行。

所有数据库中的唯一主键

在第 4 课中,将根据统一模式创建远程模式。这意味着远程模式和统一模式具有相同的主键。

列经过特别的选择,以确保对于所有数据库存在唯一主键。对于 sales 表,其主键由 stor_id 和 ord_num 两列构成。任何插入到远程 sales 表的值都必须具有唯一订单号(而 stor_id 值始终不变)。这样可以确保各个远程 sales 表的唯一性。如果需要从多个书店上载数据,则统一 sales 表中的主键可防止发生冲突。由于各个书店的 stor_id 值各不相同,因而来自一家书店的上载始终是唯一的。

对于 salesdetail 表,其主键由 stor_id、ord_num 和 title_id 列构成。一个订单中可能包含若干书籍标题。对于远程 sales 表,不同的行可能具有相同的 stor_id 和 ord_num 值,但是其 title_id 值必须不同。这可以确保每个远程 salesdetail 表的唯一性。与 sales 表类似,从某一书店向统一数据库上载的每个项对于另一个书店都是唯一的,因为它们的 stor_id 值不同。

进一步阅读

有关 Adaptive Server Enterprise 问题的详细信息,请参见Adaptive Server Enterprise 统一数据库

有关生成唯一主键不同方式的详细信息,请参见维护唯一主键