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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 数据导入和导出 » 数据库迁移到 SQL Anywhere » sa_migrate 系统过程

 

使用数据库迁移系统过程迁移各个表

可以使用数据库迁移系统过程迁移单个表。

前提条件

您必须具有以下系统特权:

  • CREATE ANY TABLE

  • CREATE ANY INDEX

  • INSERT ANY TABLE

  • SELECT ANY TABLE

  • ALTER ANY TABLE

  • DROP ANY TABLE

必须已创建远程服务器。必须已有用户拥有目标数据库中的表。

要创建外部登录,您必须具有 MANAGE ANY USER 系统特权。

上下文和注释

不要为 table-nameowner-name 参数都提供 NULL 值。这将迁移数据库中的所有表,包括系统表。并且,远程数据库中属于不同用户的同名的表在目标数据库中都属于同一个所有者。建议您一次迁移与一个所有者关联的表。

 任务
  1. 创建目标数据库。

  2. 在 Interactive SQL 中,连接到目标数据库。

  3. (可选)创建用于连接远程数据库的外部登录。只有当用户在目标数据库和远程数据库上具有不同的口令,或者当您在远程数据库上登录时使用的用户 ID 与在目标数据库上登录时使用的用户 ID 不同时,才需要创建外部登录。

  4. 运行 sa_migrate_create_remote_table_list 系统过程。例如:

    CALL sa_migrate_create_remote_table_list( 'rmt_server1',
         NULL, 'remote_user1', 'mydb' );

    必须为 Adaptive Server Enterprise 和 Microsoft SQL Server 数据库指定数据库名。

    此过程使用要迁移的远程表列表填充 dbo.migrate_remote_table_list 表。可以从此表中删除不想迁移的远程表的行。

  5. 运行 sa_migrate_create_tables 系统过程。例如:

    CALL sa_migrate_create_tables( 'local_user1' );

    此过程从 dbo.migrate_remote_table_list 中提取远程表列表,然后为列出的每个远程表创建代理表和基表。此过程还为迁移的表创建所有主键索引。

  6. 要将数据从远程表迁移到目标数据库上的基表中,可运行 sa_migrate_data 系统过程。例如:

    CALL sa_migrate_data( 'local_user1' );

    此过程将数据从每个远程表迁移到由 sa_migrate_create_tables 过程创建的基表中。

    如果不想从远程数据库中迁移外键,则可以跳至第 10 步。

  7. 运行 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。

    您可以删除不想在本地基表上重新创建的任何外键映射。

  8. 运行 sa_migrate_create_fks 系统过程。例如:

    CALL sa_migrate_create_fks( 'local_user1' );

    此过程在基表上创建在 dbo.migrate_remote_fks_list 中定义的外键映射。

  9. 要删除为执行迁移而创建的代理表,可运行 sa_migrate_drop_proxy_tables 系统过程。例如:

    CALL sa_migrate_drop_proxy_tables( 'local_user1' );

结果

此过程删除为迁移创建的所有代理表,整个迁移过程到此完成。

 另请参见