Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
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 文を使用してこのユーザーを作成します。このパラメーターの値は必須です。
server_name リモートデータベースへの接続に使用されるリモートサーバーの名前を指定する VARCHAR(128) パラメーター。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、IBM DB2、Microsoft SQL Server、Adaptive Server Enterprise、または SQL Anywhere のデータベースから SQL Anywhere にテーブルをマイグレートできます。このプロシージャーでは、1 回の操作だけで、指定したサーバーから外部キーマッピングを含めたリモートテーブルセットをマイグレートできます。sa_migrate システムプロシージャーは、次のシステムプロシージャーを呼び出します。
マイグレーションを柔軟に行う必要がある場合は、sa_migrate の代わりにこれらのシステムプロシージャーを使用できます。たとえば、別のユーザーが所有するテーブルとの外部キー関係を持つテーブルをマイグレートする場合は、sa_migrate を使用すると外部キー関係を保持できません。
テーブルをマイグレートするためには、まず 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 );