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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » システム・オブジェクト » システム・プロシージャ » システム・プロシージャのアルファベット順リスト

 

sa_migrate システム・プロシージャ

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_ownerserver_name の各パラメータを指定するだけで、リモート・データベースのすべてのテーブルを SQL Anywhere データベースに移行できます。ただし、これら 2 つのパラメータのみを指定した場合、ターゲットの SQL Anywhere データベースでは、移行するすべてのテーブルが 1 人の所有者に属することになります。リモート・データベースの各テーブルの所有者が異なり、SQL Anywhere データベースでもこれらのテーブルに異なる所有者を指定する場合は、所有者ごとに個別にテーブルを移行します。その際、sa_migrate プロシージャを呼び出すたびに base_table_owner パラメータと owner_name パラメータを指定します。

警告

table_nameowner_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 );