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

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 远程数据和批量操作 » 访问远程数据

 

连接远程表

下图说明本地数据库服务器上的代理表映射到了远程服务器 RemoteSA 上 SQL Anywhere 示例数据库中的远程表 Employees 和 Departments。

远程表和代理表之间相互映射。

您可以在不同 SQL Anywhere 数据库上的表之间使用连接。下面是一个简单的示例,该示例只使用一个数据库来说明这些原则。

 ♦  在两个远程表之间进行连接 (SQL)
  1. 创建一个名为 empty.db 的新数据库。

    此数据库未保存任何数据。它只用来定义远程对象和访问 SQL Anywhere 示例数据库。

  2. 启动运行 empty.db 的数据库服务器。您可以使用以下命令行完成此步骤:

    dbsrv12 empty
  3. 从 Interactive SQL 以用户 DBA 身份连接到 empty.db

  4. 在新数据库中,创建一个名为 RemoteSA 的远程服务器。其服务器类为 saodbc,连接字符串是指 SQL Anywhere 12 Demo ODBC 数据源:

    CREATE SERVER RemoteSA
    CLASS 'saodbc'
    USING 'SQL Anywhere 12 Demo';
  5. 在本示例中,您在远程数据库和本地数据库上使用相同的用户 ID 和口令,因此不需要外部登录。

    有时,连接远程服务器上的数据库时必须提供用户 ID 和口令。在新数据库中,您能够创建到远程服务器的外部登录。在本例中,为简单起见,本地登录名和远程用户 ID 均为 DBA:

    CREATE EXTERNLOGIN DBA
    TO RemoteSA
    REMOTE LOGIN DBA
    IDENTIFIED BY sql;
  6. 定义 p_Employees 代理表:

    CREATE EXISTING TABLE p_Employees
    AT 'RemoteSA..GROUPO.Employees';
  7. 定义 p_Departments 代理表:

    CREATE EXISTING TABLE p_Departments
    AT 'RemoteSA..GROUPO.Departments';
  8. 在 SELECT 语句中使用代理表执行连接。

    SELECT GivenName, Surname, DepartmentName
    FROM p_Employees JOIN p_Departments
    ON p_Employees.DepartmentID = p_Departments.DepartmentID
    ORDER BY Surname;