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 人の所有者に関連付けられたテーブルだけにすることをおすすめします。
次のシステム権限が必要です。
CREATE TABLE または CREATE ANY TABLE (ベーステーブルの所有者でない場合)
SELECT ANY TABLE (ベーステーブルの所有者でない場合)
INSERT ANY TABLE (ベーステーブルの所有者でない場合)
ALTER ANY TABLE (ベーステーブルの所有者でない場合)
CREATE ANY INDEX (ベーステーブルの所有者でない場合)
DROP ANY TABLE (ベーステーブルの所有者でない場合)
なし。
次の文は、リモートデータベースからユーザ DBA に属するすべてのテーブルを外部キーマッピングとともにマイグレートし、リモートテーブル内のデータをマイグレートします。また、移行の完了時にプロキシテーブルを削除します。この例では、移行するすべてのテーブルが、SQL Anywhere ターゲットデータベースの LocalUser に属します。
CALL sa_migrate( 'LocalUser', 'RemoteSA', NULL, 'DBA', NULL, 1, 1, 1 ); |
次の文は、ユーザ DBA に属するすべてのテーブルをリモートデータベースからマイグレートします。対象の SQL Anywhere データベースで、これらのテーブルはユーザ LocalUser に属します。マイグレート中に作成されたプロキシテーブルは完了時に削除されず、LocalUser に属します。
CALL sa_migrate( 'LocalUser', 'RemoteSA', NULL, 'DBA', NULL, 1, 0, 1 ); |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |