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

ApsaraDB RDS:フルバックアップのクラウド移行

最終更新日:Mar 29, 2026

完全バックアップファイル (.bak) を Object Storage Service (OSS) にアップロードし、その後コンソールから RDS インスタンスにインポートすることで、自己管理 SQL Server データベースを ApsaraDB RDS for SQL Server に移行します。この手法は、ワンタイム移行、ディザスタリカバリ、およびクラウドベースのデータバックアップに適用可能です。

仕組み

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

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

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

重要

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

制限事項

開始前に、以下の制約事項を確認し、本ソリューションがご利用のユースケースに適合することをご確認ください。

  • 移行範囲:データベース単位のみ。1 回のタスクで 1 つのデータベースのみ対応可能です。

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

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

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

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

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

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

  • 移行後のアカウント:移行後、ソースインスタンスから移行された元のデータベースアカウントは利用できなくなります。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 インスタンスに、移行対象のデータベースと同じ名前のデータベースが既に存在すること。

  • Resource Access Management (RAM) ユーザーを使用する場合:

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

    • Alibaba Cloud アカウントが、ApsaraDB RDS サービスアカウントに対して OSS リソースへのアクセス権限を付与済みであること。以下の権限付与手順をご確認ください。

    • Alibaba Cloud アカウントが、「カスタムアクセスポリシーの作成」を実行し、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. スクリプト内の SELECT 文の直下にある YOU HAVE TO INIT PUBLIC VARIABLES HERE セクションで、以下のパラメーターを設定します。

    パラメーター説明
    @backup_databases_listバックアップ対象のデータベース。複数のデータベース名はセミコロン (;) またはカンマ (,) で区切ります。
    @backup_typeバックアップタイプ:FULLDIFF、または LOG
    @backup_folderバックアップファイルの保存先ローカルディレクトリ。存在しない場合は自動的に作成されます。
    @is_run1 を指定するとバックアップが実行され、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_IDAccessKey ID
OSS_ACCESS_KEY_SECRETAccessKey Secret
OSS_SESSION_TOKENSTS トークン(STS 認証情報を使用する場合のみ必須)
# -*- coding: utf-8 -*-
"""
Alibaba Cloud OSS Python SDK v2
Dependency: 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:
    """
    Create a v2 client from environment variables.
    - Prioritize using Region (recommended), but also support custom Endpoints (optional).
    - Compatible with both AK and STS:
        * AK: Requires OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET
        * STS: Also requires OSS_SESSION_TOKEN (compatible with the old variable OSS_SECURITY_TOKEN)
    """
    # Compatibility: If the user uses the old variable OSS_SECURITY_TOKEN, map it to the v2 expected 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 Token (optional)

    if not (ak and sk):
        raise ValueError("No valid AK found. Set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables. "
                         "If using STS, also set OSS_SESSION_TOKEN (or the old name OSS_SECURITY_TOKEN).")

    # Indicate the type of credential used
    if st:
        print("STS Token (OSS_SESSION_TOKEN) detected. Using STS credentials.")
    else:
        print("No STS Token detected. Using AccessKey (AK) credentials.")

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

    # Basic network configuration
    cfg.region = region  # Example: 'cn-hangzhou'
    if endpoint:
        # Optional: Custom Endpoint (e.g., internal network, accelerated, dedicated domain)
        cfg.endpoint = endpoint

    # You can also add other configurations here, such as: 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,
):
    """
    Implement concurrent multipart upload with resumable upload.

    :param client: Initialized oss.Client
    :param bucket_name: Destination bucket name
    :param object_key: Destination object key (without bucket name)
    :param file_path: Full path of the local file
    :param part_size: Part size in bytes, default is 1 MB
    :param parallel_num: Number of concurrent upload threads, default is 4
    :param checkpoint_dir: Directory to store breakpoint information; if None, resumable upload is disabled
    """
    file_path = str(file_path)
    if not Path(file_path).exists():
        raise FileNotFoundError(f"Error: Local file not found. Check the file_path configuration: {file_path}")

    # Construct the Uploader; enable resumable upload based on whether checkpoint_dir is provided
    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"Starting to upload file: {file_path}")
    print(f"Destination Bucket: {bucket_name}")
    print(f"Destination Object: {object_key}")
    print(f"Part size: {part_size} bytes, Concurrency: {parallel_num}")
    if checkpoint_dir:
        print(f"Resumable upload: Enabled (checkpoint_dir={checkpoint_dir})")
    else:
        print("Resumable upload: Disabled (set checkpoint_dir to enable)")

    # Execute the upload (Uploader automatically chooses between multi/single part concurrent upload based on size)
    result = uploader.upload_file(
        oss.PutObjectRequest(bucket=bucket_name, key=object_key),
        filepath=file_path,
    )

    print("-" * 30)
    print("File uploaded successfully!")
    print(f"HTTP Status: {result.status_code}")
    print(f"ETag: {result.etag}")
    print(f"Request ID: {result.request_id}")
    # CRC-64 checksum; v2 enables data validation by default
    print(f"CRC64: {result.hash_crc64}")
    print("-" * 30)


def main():
    # Before running the code example, make sure you have set the corresponding environment variables.
    # macOS/Linux:
    #   AK method:
    #     export OSS_ACCESS_KEY_ID=YOUR_AK_ID
    #     export OSS_ACCESS_KEY_SECRET=YOUR_AK_SECRET
    #   STS method:
    #     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

    # ===================== Parameters (modify as needed) =====================
    # Region example: 'cn-hangzhou'; we recommend using Region first
    region = "cn-hangzhou"

    # Optional: Custom Endpoint (for internal network, dedicated domain, accelerated domain name, etc.)
    # Example: 'https://oss-cn-hangzhou.aliyuncs.com'
    endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

    # Bucket and Object
    bucket_name = "examplebucket"
    object_key = "test.bak"

    # Full path of the local file to upload.
    # Windows example: r'D:\localpath\examplefile.txt'  (note the r at the beginning)
    # macOS/Linux example: '/Users/test/examplefile.txt'
    file_path = r"D:\oss\test.bak"

    # Sharding and concurrency
    part_size = 1 * 1024 * 1024  # Default is 1 MB; OSS requires a minimum part size of 100 KB
    parallel_num = 4

    # Resumable upload directory (pass None to disable; we recommend specifying a writable directory)
    checkpoint_dir = str(Path.cwd() / ".oss_checkpoints")
    # =================== End of parameters ===================

    print("Script execution starts...")
    try:
        client = get_client_from_env(region=region, endpoint=endpoint)
        # If resumable upload is enabled, make sure the directory exists
        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:
        # Error returned by the OSS server
        print("\nAn OSS server-side error occurred.")
        print(f"HTTP Status: {getattr(e, 'status_code', 'N/A')}")
        print(f"Error Code: {getattr(e, 'code', 'N/A')}")
        print(f"Message: {getattr(e, 'message', 'N/A')}")
        print(f"Request ID: {getattr(e, 'request_id', 'N/A')}")
        print(f"Endpoint: {getattr(e, 'request_target', 'N/A')}")
    except oss_ex.BaseError as e:
        # SDK local/serialization/deserialization/credential errors
        print("\nAn OSS SDK client-side error occurred.")
        print(str(e))
    except Exception as e:
        print(f"\nAn unknown error occurred: {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=FULL` および `IsOnlineDB=True` を設定します。アクセス保留(増分バックアップ)BackupMode=UPDFIsOnlineDB=False:完全バックアップに加えてログバックアップまたは差分バックアップを使用した移行。`BackupMode=UPDF` および `IsOnlineDB=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」をクリックします。

    このインスタンスタイプでは、完全バックアップファイルのワンタイムインポートのみがサポートされています。

    Enter the OSS URL

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

RDS インスタンスタイプに応じたビューを選択してください。

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

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

Migration records

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

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

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

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

一般的な戻りメッセージ

タスクタイプステータスタスク説明意味
ワンタイム完全バックアップインポート成功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.ファイルは差分バックアップです。代わりに完全バックアップファイルを提供してください。

トラブルシューティング

データベース (xxx) は既に RDS 上に存在します。バックアップを取得して削除した後、再度お試しください。 または データベース 'xxx' は既に存在します。別のデータベース名を選択してください。

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

バックアップセット (xxx.bak) はデータベース差分バックアップです。完全バックアップのみを受け付けます。

提供されたファイルは差分バックアップです。本移行手法では完全バックアップファイルのみがサポートされています。

バックアップセット (xxx.trn) はトランザクションログバックアップです。完全バックアップのみを受け付けます。

提供されたファイルはログバックアップです。本移行手法では完全バックアップファイルのみがサポートされています。

xxx.bak の検証に失敗しました。バックアップファイルが破損しているか、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
重要

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

復元に必要なディスク領域が不足しています。残り容量 (xxx MB) < 必要容量 (xxx MB)。 または ディスク領域が不足しています。残り容量 xxx MB < バックアップファイル xxx MB。

RDS インスタンスのストレージが不足しています。「インスタンスストレージのスペックアップ」を実行してください。

ログイン要求によるデータベース "xxx" を開けません。ログインに失敗しました。

RDS インスタンスへの接続に使用したアカウントが、データベースに対する権限を持っていません。「アカウント管理」ページで必要な権限を付与してください。「アカウントへの権限付与」および「各種アカウントタイプがサポートする権限」をご参照ください。

RDS には初期アカウントがまだありません。この移行されたデータベース (xxx) に対して、RDS コンソールでアカウントを作成し、権限を付与してください。

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

移行タスクの構成時に OK ボタンが無効化されている

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

permission deniedAliyunRDSImportRole の権限付与時に RAM ユーザーで発生)

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

API リファレンス

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