すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:完全バックアップのクラウドへの移行

最終更新日:Jul 11, 2026

完全バックアップファイル (.bak) を Object Storage Service (OSS) にアップロードし、それを RDS インスタンスにインポートすることで、自己管理 SQL Server データベースを ApsaraDB RDS for SQL Server に移行します。この方法は、1回限りの移行、ディザスタリカバリ、クラウドベースのデータバックアップに適しています。

仕組み

  1. オンプレミスの SQL Server データベースを .bak ファイルにバックアップします。

  2. バックアップファイルを、ご利用の RDS インスタンスと同じリージョンにある OSS バケットにアップロードします。

  3. RDS コンソールからインポートタスクをトリガーします。システムが OSS からファイルを取得し、復元します。

重要

このソリューションは、データベースレベルの移行のみをサポートします。複数またはすべてのデータベースを一度に移行するには、インスタンスレベルの移行ソリューションをご利用ください。

制限事項

開始する前に、以下の制約をご確認ください。

  • 移行範囲:データベースレベルのみ。タスクごとに1つのデータベース。

  • バージョン互換性:ソース SQL Server のバージョンは、移行先 RDS インスタンスのバージョンより新しくすることはできません。例えば、SQL Server 2016 のバックアップを SQL Server 2012 インスタンスに復元することはできません。

  • バックアップタイプ:完全バックアップファイル (.bak) のみ。差分バックアップおよびログバックアップはインポートプロセスで受け付けられません。

  • ファイル名:!@#$%^&*()_+-= などの特殊文字を含めることはできません。

  • ファイル形式:ソースが ApsaraDB RDS for SQL Server からダウンロードしたバックアップファイル (.zip 形式) の場合、アップロードする前に .bak に解凍してください。

  • サポートされている拡張子:.bak (完全バックアップ)、.diff (差分バックアップ)、.trn または .log (ログバックアップ)。他の拡張子を持つファイルは認識されません。

  • AliyunRDSImportRole:RDS サービスアカウントに OSS へのアクセスを許可すると、AliyunRDSImportRole という名前のロールが Resource Access Management (RAM) に作成されます。このロールを変更または削除しないでください。変更または削除すると、移行タスクが失敗します。誤って削除した場合は、移行ウィザードを通じて再度権限を付与してください。

  • 移行後のアカウント:移行後、ソースインスタンスの元のデータベースアカウントは利用できなくなります。ApsaraDB RDS コンソールで新しいアカウントを作成してください。

  • OSS ファイルの保持:移行タスクが完了するまで、OSS からバックアップファイルを削除しないでください。

課金

シナリオ コスト
バックアップファイルの OSS へのアップロード 無料
バックアップファイルの OSS での保管 OSS ストレージ料金が適用されます。OSS の料金OSS の料金をご参照ください。
内部ネットワーク経由でのインポート (同一リージョン) 無料
インターネット経由でのインポート OSS のアウトバウンドトラフィックには料金が発生します。詳細については、OSS の料金OSS の料金をご参照ください。

前提条件

開始する前に、以下を確認してください。

  • RDS インスタンスにデータファイルを保持するのに十分なストレージ容量が残っていること。不足している場合は、インスタンスストレージをアップグレードしてください。

  • SQL Server 2012 以降、またはクラウドディスクを使用する SQL Server 2008 R2 の場合:RDS インスタンスに、移行対象のデータベースと同じ名前のデータベースが存在しないこと。

  • パフォーマンス専有型のローカルディスクを使用する SQL Server 2008 R2 の場合:RDS インスタンスに、移行対象のデータベースと同じ名前のデータベースが既に存在すること。

  • RAM ユーザーを使用する場合:

    • RAM ユーザーに AliyunOSSFullAccess および AliyunRDSFullAccess 権限が付与されていること。詳細は、「RAM を使用した OSS 権限の管理」および「RAM を使用した ApsaraDB RDS 権限の管理」をご参照ください。

    • ご利用の Alibaba Cloud アカウント (root ユーザー) が、ApsaraDB RDS サービスアカウントに OSS リソースへのアクセスを許可していること。以下の権限付与手順をご参照ください。

    • ご利用の Alibaba Cloud アカウント (root ユーザー) がカスタムアクセスポリシーを作成し、それを RAM ユーザーにアタッチしていること。ポリシーには以下を含める必要があります:``json { "Version": "1", "Statement": [ { "Action": [ "ram:GetRole" ], "Resource": "acs:ram:*:*:role/AliyunRDSImportRole", "Effect": "Allow" } ] } ``

      ポリシーの内容

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ram:GetRole"
                  ],
                  "Resource": "acs:ram:*:*:role/AliyunRDSImportRole",
                  "Effect": "Allow"
              }
          ]
      }

権限付与の手順

RDS に OSS へのアクセスを許可する

権限付与を確認または実行するには:

  1. RDS インスタンスの [バックアップと復元] ページに移動し、[OSS バックアップデータを RDS に移行] をクリックします。

  2. [インポートガイド] で、[次へ] を 2 回クリックして、ステップ [3. データのインポート] に進みます。

  3. 左下隅に「RDS 公式サービスアカウントに OSS へのアクセス権限を付与しました」というメッセージが表示される場合、権限付与はすでに完了しています。表示されない場合は、[権限付与 URL] をクリックして権限を付与してください。

image

ソースデータベースの準備

オンプレミスの SQL Server 環境で DBCC CHECKDB を実行し、バックアップ前にデータベースにエラーがないことを確認します。

DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS

クリーンなデータベースは以下を返します。

CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

チェックでエラーが報告された場合は、処理を進めないでください。問題の修正方法については、「DBCC CHECKDB が失敗しました」をご参照ください。

ステップ 1:ローカルデータベースのバックアップ

ご利用の RDS インスタンスタイプに合った手順を選択してください。

SQL Server 2012 以降、またはクラウドディスクを使用する SQL Server 2008 R2

バックアップを開始する前に、データベースへのすべての書き込み操作を停止してください。バックアッププロセス中に書き込まれたデータは、バックアップファイルに含まれません。
  1. バックアップスクリプトをダウンロードし、SQL Server Management Studio (SSMS) で開きます。

  2. スクリプト内の YOU HAVE TO INIT PUBLIC VARIABLES HERE の下にある SELECT 文でパラメーターを設定します。

    パラメーター 説明
    @backup_databases_list バックアップするデータベース。複数のデータベース名はセミコロン (;) またはカンマ (,) で区切ります。
    @backup_type バックアップタイプ:FULLDIFF、または LOG
    @backup_folder バックアップファイルのローカルディレクトリ。存在しない場合は自動的に作成されます。
    @is_run 1 はバックアップを実行、0 はドライラン (チェックのみ) を実行します。
  3. スクリプトを実行します。

パフォーマンス専有型のローカルディスクを使用する SQL Server 2008 R2

  1. SQL Server Management Studio (SSMS) を開き、移行したいデータベースにログインします。

  2. 現在の復元モデルを確認します。

    USE master;
    GO
    SELECT name, CASE recovery_model
    WHEN 1 THEN 'FULL'
    WHEN 2 THEN 'BULK_LOGGED'
    WHEN 3 THEN 'SIMPLE' END model FROM sys.databases
    WHERE name NOT IN ('master','tempdb','model','msdb');
    GO
  3. model 列が FULL でない場合は、FULL に設定します。

    重要

    復元モデルを FULL に設定すると、トランザクションログデータの量が増加します。続行する前に、十分なディスク領域があることを確認してください。

    ALTER DATABASE [dbname] SET RECOVERY FULL;
    GO
    ALTER DATABASE [dbname] SET AUTO_CLOSE OFF;
    GO
  4. データベースをバックアップします。次の例では、dbtestd:\backup\backup.bak にバックアップします。

    USE master;
    GO
    BACKUP DATABASE [dbtest] TO DISK = 'd:\backup\backup.bak' WITH COMPRESSION, INIT;
    GO
  5. バックアップファイルを検証します。

    USE master;
    GO
    RESTORE FILELISTONLY
      FROM DISK = N'D:\backup\backup.bak';

    コマンドが結果セットを返した場合、ファイルは有効です。エラーが返された場合は、バックアップをやり直してください。

  6. (オプション) ステップ3で変更した場合、元の復元モデルに戻します。

    ALTER DATABASE [dbname] SET RECOVERY SIMPLE;
    GO

    開始前に復元モデルが既に FULL だった場合は、このステップをスキップしてください。

ステップ 2:バックアップファイルの OSS へのアップロード

OSS バケットの準備

ご利用の RDS インスタンスと同じリージョンに OSS バケットが必要です。同一リージョンのセットアップでは内部ネットワークが使用されるため、高速でアウトバウンドトラフィック料金もかかりません。

既にバケットをお持ちの場合、以下の要件を満たしていることを確認してください。

  • ストレージクラス:標準。 低頻度アクセス、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブストレージはサポートされていません。

  • サーバー側暗号化:無効

バケットを作成する必要がある場合OSS を有効化していることを確認してから、以下の手順に従ってください。

  1. OSS コンソールにログインし、[バケット] をクリックし、次に [バケットの作成] をクリックします。

  2. 以下のパラメーターを設定します。他のすべてのパラメーターはデフォルト値のままにします。

    重要

    バケット作成時にサーバー側暗号化を有効にしないでください。データ漏洩を防ぎ、コストを削減するために、移行後にバケットを削除してください。

    パラメーター 説明
    バケット名 グローバルに一意で、作成後に変更できません。小文字、数字、ハイフンのみ使用可能。小文字または数字で始まり、終わる必要があります。3~63文字。 migratetest
    リージョン ご利用の RDS インスタンスのリージョンと一致させる必要があります。 中国 (杭州)
    ストレージクラス 標準 を選択します。 標準

バックアップファイルのアップロード

ファイルサイズに応じてアップロード方法を選択してください。

ossbrowser の使用 (推奨)

オプション 1:ossbrowser (ほとんどの場合に推奨)

  1. ossbrowser をダウンロードします。

  2. Windows x64 の場合:oss-browser-win32-x64.zip を解凍し、oss-browser.exe を実行します。

  3. [AK でログオン] を選択し、[AccessKeyId][AccessKeySecret] を入力して、[ログオン] をクリックします。

    AccessKey ペアは本人確認に使用されます。AccessKey は機密情報として扱ってください。

    Login to ossbrowser

  4. 移行先のバケットをクリックします。

    Enter the bucket

  5. 上传图标 をクリックし、バックアップファイルを選択して、[開く] をクリックします。

OSS コンソールの使用

オプション 2:OSS コンソール (5 GB 未満のファイル向け)

  1. OSS コンソールにログインします。

  2. [バケット] をクリックし、次にバケット名をクリックします。

    Enter the bucket via console

  3. [オブジェクト] リストで、[オブジェクトのアップロード] をクリックします。

    Upload file via console

  4. バックアップファイルを[アップロードするファイル] エリアにドラッグするか、[ファイルを選択] をクリックして参照します。

    Select files to upload

  5. [オブジェクトのアップロード] をクリックします。

OSS API を使用したマルチパートアップロード (Python 3 プロジェクト例)

オプション 3:OSS API マルチパートアップロード (5 GB 以上のファイル向け)

再開可能なアップロードをサポートする alibabacloud-oss-v2 Python SDK を使用します。まず、依存関係をインストールします。

pip install alibabacloud-oss-v2

スクリプトを実行する前に、以下の環境変数を設定してください。

変数 説明
OSS_ACCESS_KEY_ID ご利用の AccessKey ID
OSS_ACCESS_KEY_SECRET ご利用の AccessKey Secret
OSS_SESSION_TOKEN STS トークン (STS 認証情報を使用する場合にのみ必須)
# -*- coding: utf-8 -*-
"""
Alibaba Cloud OSS Python SDK v2
依存関係: pip install alibabacloud-oss-v2
"""

import os
import sys
from pathlib import Path
import alibabacloud_oss_v2 as oss
from alibabacloud_oss_v2 import exceptions as oss_ex


def get_client_from_env(region: str, endpoint: str | None = None) -> oss.Client:
    """
    環境変数から v2 クライアントを作成します。
    - リージョンの使用を優先しますが (推奨)、カスタムエンドポイントもサポートします (オプション)。
    - AK と STS の両方に対応:
        * AK: OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET が必要
        * STS: OSS_SESSION_TOKEN も必要 (旧変数 OSS_SECURITY_TOKEN と互換性あり)
    """
    # 互換性:ユーザーが旧変数 OSS_SECURITY_TOKEN を使用している場合、v2 が期待する OSS_SESSION_TOKEN にマッピングします
    sec_token_legacy = os.getenv("OSS_SECURITY_TOKEN")
    if sec_token_legacy and not os.getenv("OSS_SESSION_TOKEN"):
        os.environ["OSS_SESSION_TOKEN"] = sec_token_legacy

    ak = os.getenv("OSS_ACCESS_KEY_ID")
    sk = os.getenv("OSS_ACCESS_KEY_SECRET")
    st = os.getenv("OSS_SESSION_TOKEN")  # STS トークン (オプション)

    if not (ak and sk):
        raise ValueError("有効な AK が見つかりません。環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET を設定してください。"
                         "STS を使用する場合は、OSS_SESSION_TOKEN (または旧名の OSS_SECURITY_TOKEN) も設定してください。")

    # 使用する認証情報の種類を示します
    if st:
        print("STS トークン (OSS_SESSION_TOKEN) が検出されました。STS 認証情報を使用します。")
    else:
        print("STS トークンが検出されませんでした。AccessKey (AK) 認証情報を使用します。")

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # 基本的なネットワーク構成
    cfg.region = region  # 例:'cn-hangzhou'
    if endpoint:
        # オプション:カスタムエンドポイント (内部ネットワーク、高速化、専用ドメインなど)
        cfg.endpoint = endpoint

    # ここに他の構成を追加することもできます。例:cfg.use_accelerate_endpoint = True
    return oss.Client(cfg)


def resumable_upload_file_v2(
    client: oss.Client,
    bucket_name: str,
    object_key: str,
    file_path: str,
    part_size: int = 1 * 1024 * 1024,
    parallel_num: int = 4,
    checkpoint_dir: str | None = None,
):
    """
    再開可能なアップロードを伴う同時マルチパートアップロードを実装します。

    :param client: 初期化された oss.Client
    :param bucket_name: 移行先バケット名
    :param object_key: 移行先オブジェクトキー (バケット名なし)
    :param file_path: ローカルファイルのフルパス
    :param part_size: パートサイズ (バイト単位)、デフォルトは 1 MB
    :param parallel_num: 同時アップロードスレッド数、デフォルトは 4
    :param checkpoint_dir: ブレークポイント情報を保存するディレクトリ。None の場合、再開可能なアップロードは無効になります
    """
    file_path = str(file_path)
    if not Path(file_path).exists():
        raise FileNotFoundError(f"エラー:ローカルファイルが見つかりません。file_path の構成を確認してください:{file_path}")

    # アップローダーを構築します。checkpoint_dir が提供されているかどうかに基づいて、再開可能なアップロードを有効にします
    if checkpoint_dir:
        uploader = client.uploader(
            enable_checkpoint=True,
            checkpoint_dir=checkpoint_dir,
            part_size=part_size,
            parallel_num=parallel_num,
        )
    else:
        uploader = client.uploader(
            part_size=part_size,
            parallel_num=parallel_num,
        )

    print(f"ファイルのアップロードを開始します:{file_path}")
    print(f"移行先バケット:{bucket_name}")
    print(f"移行先オブジェクト:{object_key}")
    print(f"パートサイズ:{part_size} バイト、同時実行数:{parallel_num}")
    if checkpoint_dir:
        print(f"再開可能なアップロード:有効 (checkpoint_dir={checkpoint_dir})")
    else:
        print("再開可能なアップロード:無効 (有効にするには checkpoint_dir を設定してください)")

    # アップロードを実行します (アップローダーはサイズに基づいてマルチ/シングルパートの同時アップロードを自動的に選択します)
    result = uploader.upload_file(
        oss.PutObjectRequest(bucket=bucket_name, key=object_key),
        filepath=file_path,
    )

    print("-" * 30)
    print("ファイルが正常にアップロードされました!")
    print(f"HTTP ステータス:{result.status_code}")
    print(f"ETag: {result.etag}")
    print(f"リクエスト ID: {result.request_id}")
    # CRC-64 チェックサム。v2 はデフォルトでデータ検証を有効にします
    print(f"CRC64: {result.hash_crc64}")
    print("-" * 30)


def main():
    # コード例を実行する前に、対応する環境変数を設定していることを確認してください。
    # macOS/Linux:
    #   AK メソッド:
    #     export OSS_ACCESS_KEY_ID=YOUR_AK_ID
    #     export OSS_ACCESS_KEY_SECRET=YOUR_AK_SECRET
    #   STS メソッド:
    #     export OSS_ACCESS_KEY_ID=YOUR_STS_ID
    #     export OSS_ACCESS_KEY_SECRET=YOUR_STS_SECRET
    #     export OSS_SECURITY_TOKEN=YOUR_STS_TOKEN
    #
    # Windows:
    #   Powershell: $env:OSS_ACCESS_KEY_ID="YOUR_AK_ID"
    #   cmd: set OSS_ACCESS_KEY_ID=YOUR_AK_ID

    # ===================== パラメーター (必要に応じて変更) =====================
    # リージョンの例:'cn-hangzhou'。まずリージョンを使用することを推奨します
    region = "cn-hangzhou"

    # オプション:カスタムエンドポイント (内部ネットワーク、専用ドメイン、高速化ドメイン名など)
    # 例:'https://oss-cn-hangzhou.aliyuncs.com'
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

    # バケットとオブジェクト
    bucket_name = "examplebucket"
    object_key = "test.bak"

    # アップロードするローカルファイルのフルパス。
    # Windows の例:r'D:\localpath\examplefile.txt' (先頭の r に注意)
    # macOS/Linux の例:'/Users/test/examplefile.txt'
    file_path = r"D:\oss\test.bak"

    # 分割と同時実行
    part_size = 1 * 1024 * 1024  # デフォルトは 1 MB。OSS は最小パートサイズ 100 KB を要求します
    parallel_num = 4

    # 再開可能なアップロードディレクトリ (無効にするには None を渡します。書き込み可能なディレクトリを指定することを推奨します)
    checkpoint_dir = str(Path.cwd() / ".oss_checkpoints")
    # =================== パラメーターの終わり ===================

    print("スクリプトの実行を開始します...")
    try:
        client = get_client_from_env(region=region, endpoint=endpoint)
        # 再開可能なアップロードが有効な場合、ディレクトリが存在することを確認します
        if checkpoint_dir:
            Path(checkpoint_dir).mkdir(parents=True, exist_ok=True)

        resumable_upload_file_v2(
            client=client,
            bucket_name=bucket_name,
            object_key=object_key,
            file_path=file_path,
            part_size=part_size,
            parallel_num=parallel_num,
            checkpoint_dir=checkpoint_dir,
        )
    except FileNotFoundError as e:
        print(e)
    except oss_ex.ServiceError as e:
        # OSS サーバーから返されたエラー
        print("\nOSS サーバー側でエラーが発生しました。")
        print(f"HTTP ステータス:{getattr(e, 'status_code', 'N/A')}")
        print(f"エラーコード:{getattr(e, 'code', 'N/A')}")
        print(f"メッセージ:{getattr(e, 'message', 'N/A')}")
        print(f"リクエスト ID: {getattr(e, 'request_id', 'N/A')}")
        print(f"エンドポイント:{getattr(e, 'request_target', 'N/A')}")
    except oss_ex.BaseError as e:
        # SDK のローカル/シリアル化/デシリアル化/認証情報エラー
        print("\nOSS SDK クライアント側でエラーが発生しました。")
        print(str(e))
    except Exception as e:
        print(f"\n不明なエラーが発生しました:{e}")


if __name__ == "__main__":
    main()

バックアップファイル URL の取得 (パフォーマンス専有型のローカルディスクを使用する SQL Server 2008 R2 のみ)

ファイルをアップロードした後、インポートステップで使用するための一時的な URL を生成します。

  1. OSS コンソールにログインし、[バケット] をクリックします。

  2. 移行先バケットの名前をクリックします。

  3. 左側のナビゲーションウィンドウで、[ファイル管理] > [ファイル] を選択します。

  4. バックアップファイルの [アクション] 列で [詳細] をクリックします。[有効期限 (秒)]28800 (8 時間) に設定します。

    重要

    移行タスクはこの URL を使用してファイルをダウンロードします。タスクが完了する前に URL の有効期限が切れると、移行は失敗します。

  5. [ファイル URL のコピー] をクリックします。

    Copy file URL

  6. 内部ネットワーク経由で移行するには、URL 内のパブリックエンドポイントを内部エンドポイントに変更します。例えば、oss-cn-shanghai.aliyuncs.comoss-cn-shanghai-internal.aliyuncs.com に変更します。

    内部エンドポイントのフォーマットはリージョンによって異なります。詳細については、「エンドポイントとデータセンターエンドポイントとデータセンター」をご参照ください。

ステップ 3:OSS バックアップデータのインポート

ご利用の RDS インスタンスタイプに合った手順を選択してください。

SQL Server 2012 以降、またはクラウドディスクを使用する SQL Server 2008 R2

  1. インスタンスページに移動します。トップナビゲーションバーで RDS インスタンスのリージョンを選択し、インスタンス ID をクリックします。

  2. 左側のナビゲーションウィンドウで、[バックアップと復元] をクリックします。

  3. [OSS バックアップデータを RDS へ移行] をクリックします。

  4. [インポートガイド] で、[次へ] を 2 回クリックしてデータインポートステップに進みます。

    初回使用時には、ApsaraDB RDS から OSS へのアクセスを権限付与する必要があります。[権限付与 URL] をクリックして、権限付与を完了します。権限付与を行わない場合、[OSS バケット] リストは空になります。アップロードしたファイルが表示されない場合は、ファイルの拡張子が 制限事項 の要件を満たしていること、およびバケットと RDS インスタンスが同じリージョンにあることを確認してください。
  5. インポート設定を構成します。

    パラメーター 説明
    データベース名 RDS インスタンス上で復元されるデータベースの名前。SQL Server の命名規則に従い、既存のデータベースやアタッチされていないデータベースファイルと競合しないようにする必要があります。バックアップセットにターゲットデータベースと同じ名前のデータベースファイルが含まれている場合、そのファイルを使用して復元できます。その際、データベースファイル名はターゲットデータベース名と一致する必要があります。
    OSS バケット バックアップファイルを含むバケットを選択します。
    OSS ファイル 検索アイコンをクリックして、プレフィックスでファイルを検索します。リストにはファイル名、サイズ、更新時刻が表示されます。
    クラウド移行方法 即時アクセス (完全バックアップ):単一の完全バックアップファイルからの完全移行。BackupMode=FULLIsOnlineDB=True を設定します。アクセス保留 (増分バックアップ):完全バックアップに加えてログまたは差分バックアップを使用した移行。BackupMode=UPDFIsOnlineDB=False を設定します。
    整合性チェックモード 非同期 DBCC:データベースをすぐに開き、バックグラウンドで DBCC CHECKDB を実行します。ダウンタイムを削減します。CheckDBMode=AsyncExecuteDBCheck を設定します。ダウンタイムの最小化を優先する場合に使用します。同期 DBCC:データベースを開く前に DBCC CHECKDB を実行します。時間はかかりますが、事前にデータ整合性を確認します。CheckDBMode=SyncExecuteDBCheck を設定します。
  6. [OK] をクリックします。

タスクが完了すると、RDS インスタンスは、自動バックアップポリシーに従って、次のスケジュール時刻にバックアップされます。作成されたバックアップセットには移行されたデータが含まれ、[バックアップと復元] ページで利用可能になります。すぐにバックアップを生成するには、手動バックアップをトリガーします。

SQL Server 2008 R2 (パフォーマンス専有型ローカルディスク付き)

  1. インスタンスページに移動し、リージョンを選択してインスタンス ID をクリックします。

  2. 左側のナビゲーションウィンドウで、[データベース] をクリックします。

  3. ターゲットデータベースの[操作]列で、[OSS からバックアップファイルを移行]をクリックします。

    Migrate backup files from OSS

  4. [インポートガイド] で、情報を確認し、[次へ] をクリックします。

  5. OSS アップロードプロンプトを確認し、[次へ] をクリックします。

  6. [バックアップファイルの OSS URL] フィールドに、ステップ 2 でコピーした URL を入力し、[OK] をクリックします。

    このインスタンスタイプは、完全バックアップファイルの1回限りのインポートのみをサポートします。

    Enter the OSS URL

ステップ 4:移行タスクの監視

ご利用の RDS インスタンスタイプに合ったビューを選択してください。

SQL Server 2012 以降、またはクラウドディスクを使用する SQL Server 2008 R2

[バックアップと復元] に移動して、[バックアップデータのクラウド移行レコード] タブをクリックします。タブには、タスクステータス、開始時刻、終了時刻が表示されます。デフォルトでは、過去 1 週間のレコードが表示されます。必要に応じて時間範囲を調整してください。

Migration records

[タスクステータス][失敗] の場合は、[タスクの説明] を確認するか、[ファイルの詳細を表示] をクリックして原因を特定し、問題を解決してからタスクを再実行します。

パフォーマンス専有型のローカルディスクを使用する SQL Server 2008 R2

[クラウドへのデータ移行] ページで、移行タスクを見つけて進捗を確認します。

[タスクステータス][失敗] の場合、[タスクの説明] を確認するか、[ファイルの詳細を表示] をクリックして原因を特定し、問題を解決した後にタスクを再実行します。

一般的なリターンメッセージ

タスクタイプ ステータス タスクの説明 意味
1回限りの完全バックアップインポート 成功 success 移行は正常に完了しました。
失敗 Failed to download backup file since OSS URL was expired. タスクが終了する前に OSS のダウンロード URL の有効期限が切れました。URL を再生成して再試行してください。
Your backup is corrupted or newer than RDS, failed to verify. バックアップファイルが破損しているか、ソース SQL Server のバージョンが RDS インスタンスのバージョンより新しいです。
DBCC checkdb failed ソースデータベースに整合性エラーがあります。
autotest_2008r2_std_testmigrate_log.trn is a Transaction Log backup, we only accept a FULL Backup. ファイルはログバックアップです。代わりに完全バックアップファイルを提供してください。
autotest_2008r2_std_testmigrate_diff.bak is a Database Differential backup, we only accept a FULL Backup. ファイルは差分バックアップです。代わりに完全バックアップファイルを提供してください。

トラブルシューティング

The database (xxx) already exists on RDS. Please back it up and drop it, then try again. または Database 'xxx' already exists. Choose a different database name.

ApsaraDB RDS for SQL Server は、既存のデータベースへの移行を許可していません。既存のデータベースをバックアップして削除してから、再試行してください。

Backup set (xxx.bak) is a Database Differential backup, we only accept a FULL Backup.

提供されたファイルは差分バックアップです。この移行方法は完全バックアップファイルのみを受け付けます。

Backup set (xxx.trn) is a Transaction Log backup, we only accept a FULL Backup.

提供されたファイルはログバックアップです。この移行方法は完全バックアップファイルのみを受け付けます。

Failed to verify xxx.bak, backup file was corrupted or newer edition than RDS. {#backup-verification-failed}

考えられる原因は2つあります。

  • ファイルの破損:ソースデータベースの新しい完全バックアップを作成し、新しい移行タスクを開始してください。

  • バージョンの不一致:ソース SQL Server のバージョンが、移行先 RDS インスタンスのバージョンより新しいです。同じバージョン以降を実行している RDS インスタンスを使用してください。既存の RDS インスタンスをアップグレードするには、「データベースエンジンバージョンのアップグレード」をご参照ください。

DBCC checkdb failed

ソースデータベースにエラーがあります。次のコマンドで修正してから、移行を再試行してください。

DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
重要

このコマンドはデータ損失を引き起こす可能性があります。

Not Enough Disk Space for restoring, space left (xxx MB) < needed (xxx MB). または Not Enough Disk Space, space left xxx MB < bak file xxx MB.

RDS インスタンスのストレージが不足しています。インスタンスストレージをアップグレードして、再試行してください。

Cannot open database "xxx" requested by the login. The login failed.

アカウントにデータベースに対する権限がありません。[アカウント管理] ページで、必須の権限を付与してください。詳細については、「アカウントに権限を付与する」および「さまざまなアカウントタイプでサポートされている権限」をご参照ください。

Your RDS doesn't have any init account yet, please create one and grant permissions on RDS console to this migrated database (xxx).

RDS インスタンスに特権アカウントがありません。バックアップは正常に復元されましたが、権限を付与できませんでした。特権アカウントを作成してください。

移行タスクを設定する際に [OK] ボタンがグレーアウトする

RAM ユーザーの権限が不十分です。「前提条件」の RAM ユーザー要件を確認してください。

RAM ユーザーとして AliyunRDSImportRole の権限を付与する際に permission denied が発生する

Alibaba Cloud アカウント (root ユーザー) を使用して、RAM ユーザーに一時的に AliyunRAMFullAccess を追加してください。

API リファレンス

API説明
CreateMigrateTaskOSS のバックアップファイルを ApsaraDB RDS for SQL Server インスタンスに復元する移行タスクを作成します。
CreateOnlineDatabaseTask移行タスクのデータベースを開きます。
DescribeMigrateTasksApsaraDB RDS for SQL Server インスタンスの移行タスクを一覧表示します。
DescribeOssDownloads移行タスクのファイル詳細を照会します。