sa_migrate システムプロシージャーを使用して、リモートデータを移行します。テーブルや外部キーのマッピングを削除する場合は、拡張メソッドを使用します。
table_name パラメーターと owner_name パラメーターの両方に NULL を指定すると、データベース内のシステムテーブルを含む、すべてのテーブルが移行します。
リモートデータベースで、テーブルの所有者が異なっていても名前が同じ場合、それらのテーブルはターゲットデータベースに移行すると 1 人の所有者に属します。したがって、一度に移行するテーブルは、1 人の所有者に関連付けられたテーブルだけにしてください。
ターゲットデータベースに移行後、テーブルをすべて同じユーザーによって所有されないようにする場合は、ターゲットデータベース上の所有者ごとに、local_table_owner 引数と owner_name 引数を指定して sa_migrate プロシージャーを実行します。
ターゲットデータベースを作成します。
Interactive SQL からターゲットデータベースに接続します。
リモートサーバーを作成してリモートデータベースに接続します。
リモートデータベースに接続するための外部ログインを作成します。この手順は、ユーザーがターゲットデータベースとリモートデータベースで異なるパスワードを使用している場合、またはターゲットデータベースで使用しているユーザー ID とは異なるユーザー ID でリモートデータベースにログインする場合にのみ必要です。
ターゲットデータベースに移行するテーブルを所有するローカルユーザーを作成します。
[SQL 文] ウィンドウ枠で、sa_migrate システムプロシージャーを実行します。次に例を示します。
CALL sa_migrate( 'local_user1', 'rmt_server1', NULL, 'remote_user1', NULL, 1, 1, 1 ); |
このプロシージャーは複数のプロシージャーを順番に呼び出し、指定された基準を使用してユーザー remote_user1 に属するリモートテーブルをすべて移行します。
table-name と owner-name パラメーターには、NULL を入力しないでください。両方に NULL を指定すると、システムテーブルを含む、データベース内のすべてのテーブルが移行します。また、リモートデータベースで、テーブルの所有者が異なっていても名前が同じ場合、それらのテーブルはターゲットデータベースに移行すると 1 人の所有者に属します。一度に移行するテーブルは、1 人の所有者に関連付けられたテーブルだけにすることをおすすめします。
ターゲットデータベースを作成します。
Interactive SQL からターゲットデータベースに接続します。
リモートサーバーを作成してリモートデータベースに接続します。
リモートデータベースに接続するための外部ログインを作成します。この手順は、ユーザーがターゲットデータベースとリモートデータベースで異なるパスワードを使用している場合、またはターゲットデータベースで使用しているユーザー ID とは異なるユーザー ID でリモートデータベースにログインする場合にのみ必要です。
ターゲットデータベースに移行するテーブルを所有するローカルユーザーを作成します。
sa_migrate_create_remote_table_list システムプロシージャーを実行します。次に例を示します。
CALL sa_migrate_create_remote_table_list( 'rmt_server1', NULL, 'remote_user1', 'mydb' ); |
リモートサーバーの名前を指定してください。
これにより、移行するリモートテーブルのリストが dbo.migrate_remote_table_list テーブルに設定されます。このテーブルから、移行しないリモートテーブルのローを削除できます。
sa_migrate_create_tables システムプロシージャーを実行します。次に例を示します。
CALL sa_migrate_create_tables( 'local_user1' ); |
このプロシージャーは、dbo.migrate_remote_table_list からリモートテーブルのリストを取り出し、リストにあるテーブルごとにプロキシテーブルとベーステーブルを作成します。また、移行したテーブルのプライマリキーインデックスもすべて作成します。
リモートテーブルからターゲットデータベース上のベーステーブルにデータを移行する場合は、sa_migrate_data システムプロシージャーを実行します。次に例を示します。
次の文を実行します。
CALL sa_migrate_data( 'local_user1' ); |
このプロシージャーは、各リモートテーブルから、sa_migrate_create_tables プロシージャーで作成されたベーステーブルにデータを移行します。
リモートデータベースから外部キーを移行しない場合は、手順 10 に進みます。
sa_migrate_create_remote_fks_list システムプロシージャーを実行します。次に例を示します。
CALL sa_migrate_create_remote_fks_list( 'rmt_server1' ); |
このプロシージャーは、dbo.migrate_remote_table_list にリストされている各リモートテーブルに関連した外部キーのリストを、テーブル dbo.migrate_remote_fks_list に設定します。
再作成しない外部キーマッピングを、ローカルのベーステーブルから削除できます。
sa_migrate_create_fks システムプロシージャーを実行します。次に例を示します。
CALL sa_migrate_create_fks( 'local_user1' ); |
このプロシージャーは、dbo.migrate_remote_fks_list に定義されている外部キーマッピングをベーステーブル上に作成します。
移行用に作成されたプロキシテーブルを削除する場合は、sa_migrate_drop_proxy_tables システムプロシージャーを実行します。次に例を示します。
CALL sa_migrate_drop_proxy_tables( 'local_user1' ); |
このプロシージャーは、移行用に作成したプロキシテーブルをすべて削除し、移行プロセスを完了します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |