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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Remote » 教程:使用 HTTP 消息系统设置复制系统

 

第 2 课:创建消息服务器

在本教程中,当可以将统一数据库用作消息服务器时,可使用单独的数据库服务器来托管消息服务器。这有助于在两个数据库服务器之间分配处理消息所需执行的工作量,同时也增加了安全性,因为您尚未开启对统一数据库的 HTTP 访问。

前提条件

您必须具有 SYS_REPLICATION_ADMIN_ROLE 系统角色。

 任务
  1. c:\tutorial\msgsrv 目录运行以下命令,创建消息服务器数据库 (msgsrv):

    dbinit -dba DBA,sql msgsrv.db
  2. 启动消息服务器:

    dbeng16 -n msgsrv c:\tutorial\msgsrv\msgsrv.db -xs http(port=8033)

    命令行中需要包括 -xs http(8033),因为该数据库服务器将从远程数据库接收 HTTP 请求,并访问存在于 c:\tutorial\messages 目录中的消息文件。启动数据库服务器时未定义任何 web 服务,但将在本课中创建。同样,由于仅启动了个人数据库服务器,所以此计算机上只有 SQL Remote 进程能够使用 HTTP 与消息服务器进行通信。在生产环境中,通常使用网络服务器,以便其他计算机上的 SQL Remote 进程也能够访问 web 服务。 有关使用 dbmlsync 的详细信息,请参见-xs 数据库服务器选项

  3. 在创建单独的消息服务器时,需要将大部分统一数据库模式复制到消息服务器中,尤其是所定义的远程用户及其地址的相关信息。可以手动完成该任务,但最简单的方式是使用 dbunload 实用程序来创建与统一数据库具有相同模式的新数据库:

    dbunload -n -xx -ac "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql" -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"

    dbunload 命令中使用的选项可执行下列操作:

    • -n   指示仅卸载模式,不会向消息服务器添加统一数据库中的任何数据。

    • -xx   执行外部卸载和重新装载,这是所涉及的两个数据库已运行时所需的操作。

    • -ac "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql"   定义卸载的目标连接,本课中为消息服务器。

    • -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"   指定卸载的源连接,本课中为统一数据库。

  4. 以具有 SYS_REPLICATION_ADMIN_ROLE 系统角色的用户身份通过 Interactive SQL 连接到消息服务器数据库 (msgsrv):

    dbisql -c "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql"

    在第 1 课中,您没有为发布者 (cons) 和远程用户 (rem) 创建口令,所以这些用户均不能够连接至统一数据库。消息服务器中的这些用户均需要一个口令,因为来自远程用户的 HTTP 请求要使用远程数据库的发布者和所提供的口令来通过消息服务器进行验证。针对消息服务器数据库 (msgsrv) 执行下列语句,以为发布者和远程用户定义口令:

    GRANT CONNECT TO cons IDENTIFIED BY cons;
    GRANT CONNECT TO rem IDENTIFIED BY rem;
  5. 首次初始化数据库时,未定义接受来自远程用户的 HTTP 请求所需的 web 服务,也未定义允许数据库服务器访问存储消息文件的目录的定义。通过使用 sr_add_message_server 存储过程,可使这些对象的创建自动化,这将要求使用一个可选参数,以指定所有对象的拥有者。针对消息服务器数据库 (msgsrv) 执行下列语句,以定义消息服务器所需的所有对象,并指定 cons 用户拥有所有对象:

    CREATE ROLE FOR USER cons;
    SET REMOTE http OPTION cons.root_directory='c:\\tutorial\\messages';
    CALL sr_add_message_server( 'cons' );
    COMMIT;

    有关详细信息,请参见sr_add_message_server 系统过程

  6. 与 Interactive SQL 断开连接。

结果

消息服务器现已由单独的数据库服务器托管。

下一个

前进至第 3 课:创建远程数据库