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

SQL Anywhere 12.0.0 (中文) » MobiLink - 服务器启动的同步 » 服务器启动的同步教程 » 教程:使用轻量级轮询进行的服务器启动的同步

 

第 2 课:生成数据库模式

在本课中,您将生成数据库模式,其中包括 Dealer 表、non_sync_request 表和 download_cursor 同步脚本。此数据库模式满足生成推式请求的要求。

 ♦  建立数据库模式
  1. 选择 [开始] » [程序] » [SQL Anywhere 12] » [管理工具] » [Sybase Central]。

  2. 执行以下任务以连接到统一数据库:

    1. 在 [连接] 菜单中,选择 [使用 SQL Anywhere 12 连接]。

    2. 从 [操作] 下拉列表中选择 [使用 ODBC 数据源连接]。

    3. 单击 [ODBC 数据源名称],然后单击 [浏览]。

    4. 选择 [SIS_CarDealer_LP_DBLSN_CONDB],然后单击 [确定]。

    5. 单击 [连接]。

  3. 使用 Interactive SQL 连接到数据库。

    可以从 Sybase Central 或命令提示符启动 Interactive SQL。

    • 要从 Sybase Central 启动 Interactive SQL,请右击 SIS_CarDealer_LP_DBLSN_CONDB - DBA 数据库,然后单击 [打开 Interactive SQL]。

    • 若要在命令提示符下启动 Interactive SQL,请运行以下命令:

      dbisql -c "dsn=SIS_CarDealer_LP_DBLSN_CONDB"
  4. 运行以下 SQL 脚本,创建和设置 Dealer 表和 non_sync_request 表:

    CREATE TABLE Dealer (
        name           VARCHAR(10) NOT NULL PRIMARY KEY,
        rating         VARCHAR(5),
        last_modified  TIMESTAMP DEFAULT TIMESTAMP
    )
    
    CREATE TABLE non_sync_request(
        poll_key       VARCHAR(128)
    )
  5. 使用以下语句,将数据插入 Dealer 表:



    INSERT INTO Dealer(name, rating) VALUES ('Audi', 'a');
    INSERT INTO Dealer(name, rating) VALUES ('Buick', 'b');
    INSERT INTO Dealer(name, rating) VALUES ('Chrysler', 'c');
    INSERT INTO Dealer(name, rating) VALUES ('Dodge', 'd');
    INSERT INTO Dealer(name, rating) VALUES ('Eagle', 'e');
    INSERT INTO Dealer(name, rating) VALUES ('Ford', 'f');
    INSERT INTO Dealer(name, rating) VALUES ('Geo', 'g');
    INSERT INTO Dealer(name, rating) VALUES ('Honda', 'h');
    INSERT INTO Dealer(name, rating) VALUES ('Isuzu', 'I');
    COMMIT;
  6. 运行以下 SQL 脚本,创建 MobiLink 系统表和存储过程。将 C:\Program Files\SQL Anywhere 12\ 替换为 SQL Anywhere 12 的安装位置。

    READ "C:\Program Files\SQL Anywhere 12\MobiLink\setup\syncsa.sql"
  7. 运行以下 SQL 脚本,指定 download_cursor 同步脚本并将同步状态记录到 ml_sis_sync_state 系统表:



    CALL ml_add_table_script(
        'CarDealer',
        'Dealer',
        'download_cursor',
        'SELECT * FROM Dealer WHERE last_modified >= ?'
    );
    
    CALL ml_add_connection_script(
        'CarDealer',
        'publication_nonblocking_download_ack',
        'CALL ml_set_sis_sync_state( 
            {ml s.remote_id},
            NULL,
            {ml s.publication_name},
            {ml s.username},
            NULL,
            {ml s.last_publication_download}
        )'
    );
    
    CALL ml_add_table_script(
        'CarDealer', 'Dealer', 'download_delete_cursor', '--{ml_ignore}'
    );
    
    COMMIT;

    此脚本设置 ml_sis_sync_state 以记录仅下载同步。记录同步状态允许您从 request_cursor 事件引用 ml_sis_sync_state 系统表。您将在下一课中指定 request_cursor 事件。

  8. 关闭 Interactive SQL。

 另请参见