SQL Anywhere データベースにリモート・テーブル・セットを移行します。
sa_migrate( base_table_owner, server_name [, table_name ] [, owner_name ] [, database_name ] [, migrate_data ] [, drop_proxy_tables ] [, migrate_fkeys ] )
base_table_owner SQL Anywhere ターゲット・データベースで、移行後のテーブルを所有するユーザを指定する VARCHAR(128) パラメータ。GRANT CONNECT 文を使用してこのユーザを作成します。このパラメータの値は必須です。GRANT 文を参照してください。
server_name リモート・データベースへの接続に使用されるリモート・サーバの名前を指定する VARCHAR(128) パラメータ。CREATE SERVER 文を使用してこのサーバを作成します。このパラメータの値は必須です。CREATE SERVER 文を参照してください。
table_name 単一のテーブルを移行する場合は、この VARCHAR(128) パラメータを使用してテーブルの名前を指定します。それ以外の場合は、このパラメータに NULL (デフォルト) を指定します。table_name と owner_name の両方のパラメータに NULL を指定しないでください。
owner_name 1 人の所有者に属するテーブルのみを移行する場合は、この VARCHAR(128) パラメータを使用して所有者の名前を指定します。それ以外の場合は、このパラメータに NULL (デフォルト) を指定します。table_name と owner_name の両方のパラメータに NULL を指定しないでください。
database_name リモート・データベースの名前を指定する VARCHAR(128) パラメータ。リモート・サーバ上の 1 つのデータベースのみからテーブルを移行する場合は、データベース名を指定します。それ以外の場合は、このパラメータに NULL (デフォルト) を入力します。
migrate_data リモート・テーブルのデータを移行するかどうかを指定する任意の BIT パラメータ。このパラメータは、0 (データを移行しない) または 1 (データを移行する) に設定できます。デフォルトでは、データが移行します。 (1)
drop_proxy_tables 移行の完了後に、移行プロセス用に作成されたプロキシ・テーブルを削除するかどうかを指定する任意の BIT パラメータ。このパラメータは、0 (プロキシ・テーブルを削除しない) または 1 (プロキシ・テーブルを削除する) に設定できます。デフォルトでは、プロキシ・テーブルが削除されます (1)。
migrate_fkeys 外部キー・マッピングが移行されるかどうかを指定する任意の BIT パラメータ。このパラメータは、0 (外部キー・マッピングを移行しない) または 1 (外部キー・マッピングを移行する) に設定できます。デフォルトでは、外部キー・マッピングが移行します (1)。
このプロシージャを使用して、Oracle、DB2、SQL Server、SQL Enterprise、Adaptive Server Enterprise、SQL Anywhere のデータベースから SQL Anywhere テーブルに移行できます。このプロシージャでは、1 回の操作だけで、指定したサーバから外部キー・マッピングを含めたリモート・テーブル・セットを移行できます。sa_migrate システム・プロシージャは、次のシステム・プロシージャを呼び出します。
移行を柔軟に行う必要がある場合は、sa_migrate の代わりにこれらのシステム・プロシージャを使用できます。たとえば、別のユーザが所有するテーブルとの外部キー関係を持つテーブルを移行する場合は、sa_migrate を使用すると外部キー関係を保持できません。
テーブルを移行するためには、まず CREATE SERVER 文を使用してリモート・データベースに接続するためのリモート・サーバを作成します。また、CREATE EXTERNLOGIN 文を使用して、リモート・データベースへの外部ログインを作成する必要がある場合もあります。CREATE SERVER 文とCREATE EXTERNLOGIN 文を参照してください。
base_table_owner と server_name の各パラメータを指定するだけで、リモート・データベースのすべてのテーブルを SQL Anywhere データベースに移行できます。ただし、これら 2 つのパラメータのみを指定した場合、ターゲットの SQL Anywhere データベースでは、移行するすべてのテーブルが 1 人の所有者に属することになります。リモート・データベースの各テーブルの所有者が異なり、SQL Anywhere データベースでもこれらのテーブルに異なる所有者を指定する場合は、所有者ごとに個別にテーブルを移行します。その際、sa_migrate プロシージャを呼び出すたびに base_table_owner パラメータと owner_name パラメータを指定します。
table_name と owner_name の両方のパラメータに NULL を指定しないでください。table_name パラメータと owner_name パラメータの両方に NULL を指定すると、データベース内のシステム・テーブルを含む、すべてのテーブルが移行します。また、リモート・データベースで、テーブルの所有者が異なっていても名前が同じ場合、それらのテーブルはターゲット・データベースに移行すると 1 人の所有者に属します。一度に移行するテーブルは、1 人の所有者に関連付けられたテーブルだけにすることをおすすめします。
なし
なし
次の文は、リモート・データベースからユーザ p_chin に属するすべてのテーブルを外部キー・マッピングとともに移行し、リモート・テーブル内のデータを移行します。また、移行の完了時にプロキシ・テーブルを削除します。この例では、移行するすべてのテーブルが、SQL Anywhere ターゲット・データベースの local_user に属します。
CALL sa_migrate( 'local_user', 'server_a', NULL, 'p_chin', NULL, 1, 1, 1 ); |
次の文は、ユーザ remote_a に属するテーブルのみをリモート・データベースから移行します。対象となる SQL Anywhere データベースでは、これらのテーブルはユーザの local_a に所属します。移行時に作成されるプロキシ・テーブルは、完了時に削除されません。
CALL sa_migrate( 'local_a', 'server_a', NULL, 'remote_a', NULL, 1, 0, 1 ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |