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

ApsaraDB RDS:SQL Server インスタンスレベルのクラウドへの移行

最終更新日:Sep 05, 2026

ApsaraDB RDS for SQL Server では、セルフマネージド SQL Server 上の 1 つ以上のデータベースから、インスタンスレベルでデータセット全体をクラウドに移行できます。移行するには、セルフマネージド SQL Server からすべてのデータベースをバックアップし、バックアップファイルを OSS バケット内の単一フォルダーにアップロードしてから、クラウド移行スクリプトを実行します。

説明

単一のデータベースを移行するには、「完全バックアップからのデータ移行」および「増分バックアップからのデータ移行」を参照してください。

前提条件

  • ソースは自己管理の SQL Server データベースである必要があります。

  • 移行先の ApsaraDB RDS for SQL Server インスタンスは、次の要件を満たす必要があります:

    • インスタンスの利用可能なストレージ領域は、移行するデータファイルのサイズより大きい必要があります。利用可能なストレージ領域が不足している場合は、インスタンス仕様をアップグレードしてください。

    • SQL Server 2008 R2 の場合、移行先インスタンスにソースデータベースと同じ名前のデータベースを作成する必要があります。この要件は、他のバージョンには適用されません。

  • RAM ユーザーとしてログインする場合は、以下の要件を満たす必要があります。

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

    • Alibaba Cloud アカウント (プライマリアカウント) が、ApsaraDB RDS の公式サービスアカウントに OSS リソースへのアクセスを許可していること。

      クリックして権限付与方法を表示

      1. ApsaraDB RDS インスタンスの復元 ページに移動し、OSS バックアップデータをクラウド上で復元する をクリックします。

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

        ページの左下隅にApsaraDB RDS 公式サービスアカウントによる OSS リソースへのアクセスが承認されましたが表示された場合、承認は完了しています。表示されない場合、承認は完了していません。この場合、ページで権限付与アドレスをクリックして承認を付与してください。

        [3. データのインポート] ページで、以下のパラメータを設定します。

        • [データベース名]:移行先データベースの名前を入力します。

        • [OSS バケット]:ドロップダウンリストから、アップロードしたバックアップファイルが保存されているバケットを選択します。

        • [OSS ファイルリスト]:ファイル名のプレフィックスを入力してバックアップファイルを検索し、ファイルを選択します。

        • [移行方法]:[データベースを開く (完全バックアップファイルが 1 つのみ)] または [データベースを開かない (差分バックアップまたはログファイルが利用可能)] を選択します。

        • [整合性チェック方法]:[同期 DBCC] または [非同期 DBCC] を選択します。

    • Alibaba Cloud アカウント (プライマリアカウント) で手動で権限ポリシーを作成し、そのポリシーを RAM ユーザーにアタッチします。

      クリックしてポリシーの内容を表示

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

制限

このソリューションは完全移行のみをサポートし、増分移行は現在サポートしていません。

課金

このトピックで説明されている方法を使用してデータを移行する場合、OSS バケットの使用に対してのみ課金されます。

シナリオ

課金ルール

OSS バケットにバックアップファイルをアップロードする

無料。

OSS バケットにバックアップファイルを保存する

ストレージ料金が発生します。詳細については、OSS のPricingページをご覧ください。

OSS バケットから RDS インスタンスにバックアップファイルを移行する

  • 内部ネットワーク経由で OSS バケットから RDS インスタンスにバックアップファイルを移行する場合、料金は発生しません。

  • インターネット経由でバックアップファイルを移行する場合、送信インターネットトラフィックに基づいて OSS バケットに課金されます。詳細については、OSS のPricingページをご覧ください。

前提条件

1. Python 3 のインストール

Python 公式 Web サイト にアクセスして、お使いのオペレーティングシステムに適したパッケージをダウンロードしてインストールします。バージョン 3.12 以降を選択してください。

  • Windows: インストール中に、Add python.exe to PATH チェックボックスを選択すると、環境変数を手動で設定する必要がなくなります。

  • macOS/Linux: 公式インストーラーまたは Homebrew、apt、dnf などのパッケージマネージャーを使用してインストールできます。詳細については、公式 Web サイトをご参照ください。

2. Python のインストールおよびバージョンの確認

実行可能ファイル名は、オペレーティングシステムやインストール方法によって異なる場合があります (例: python、python3、py)。コマンドを順番に試し、出力を確認してインストールされていることを確認してください。

Windows (コマンド プロンプトまたは PowerShell)

python --version
python3 --version
py --version
  • 出力に Python 3.12.x 以降のバージョンが表示される場合、Python は正しくインストールされており、使用できる状態です。

  • ...is not recognized as an internal or external command... のようなエラーメッセージが表示された場合は、手動で Python のインストールパスを PATH 環境変数に追加する必要があります。

macOS/Linux (ターミナル)

python --version
python3 --version

一部のシステムでは、python コマンドが古いバージョンを指している場合があります。まず python3 コマンドを使用してください。出力を確認して、Python 3.12 以降のバージョンがインストールされていることを確認してください。

3. SDK の依存関係のインストール

pip install alibabacloud_rds20140815
pip install alibabacloud-oss-v2
pip install alibabacloud_tea_openapi
pip install alibabacloud_tea_util

1. セルフマネージド SQL Server データベースのバックアップ

重要
  • データ整合性を確保するため、完全バックアップの実行中は新しいデータを書き込まないでください。サービスに影響が出ないよう、事前にこの操作をスケジュールしてください。

  • バックアップスクリプトを使用しない場合、バックアップファイルは database_name_backup_type_backup_time.bak フォーマット (例: Testdb_FULL_20180518153544.bak) で名前を付ける必要があります。これを満たさない場合、バックアップは失敗します。

  1. バックアップスクリプトをダウンロードします。

  2. バックアップスクリプトをダブルクリックして Microsoft SQL Server Management Studio (SSMS) で開きます。SSMS を使用した接続方法については、公式ドキュメントをご参照ください。

  3. 必要に応じて、次のパラメーターを変更します。

    クリックして例を展開

    SELECT
        /**
        * バックアップするデータベースのリスト。デリミタとしてセミコロン (;) またはカンマ (,) を使用します。
        * 空の値 ('') または null を指定すると、システム データベースを除くすべてのデータベースがバックアップされます。
        * 例:'[testdb]: TestDR, Test, readonly'
        **/
        @backup_databases_list = N'[dtstestdata],[testdb]'
        @backup_type = N'FULL',                    -- バックアップタイプ。有効な値: FULL (完全バックアップ)、 DIFF (差分バックアップ)、 LOG (ログ バックアップ)。
        @backup_folder = N'C:\BACKUP'              -- バックアップファイルを保存するフォルダー。
        @is_run = 1                                -- バックアップを実行するかどうかを指定します。1: バックアップを実行します。0: チェックのみ行います。

    パラメーター

    説明

    @backup_databases_list

    バックアップするデータベース。複数のデータベース名を指定する場合は、セミコロン (;) またはカンマ (,) で区切ります。

    @backup_type

    バックアップタイプ。有効な値:

    • FULL:完全バックアップ。

    • DIFF:差分バックアップ。

    • LOG:ログ バックアップ。

    重要

    この手順では、このパラメーターを FULL に設定する必要があります。

    @backup_folder

    バックアップファイルを保存するローカル ディレクトリ。このディレクトリが存在しない場合は、自動的に作成されます。

    @is_run

    バックアップを実行するかどうかを指定します。有効な値:

    • 1:バックアップを実行します。

    • 0:チェックのみ行います。

  4. バックアップスクリプトを実行し、データベースを指定したディレクトリにバックアップします。

    バックアップが完了すると、C:\backup ディレクトリに dtstestdata_FULL_20200408154821.bak や testdb_FULL_20200408154821.bak などの .bak バックアップファイルが生成され、バックアップスクリプトが正常に実行されたことを示します。

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

  1. バックアップファイルを OSS にアップロードする前に、OSS にバケットを作成する必要があります。

    • OSS にバケットが既に存在する場合、バケットが次の要件を満たしていることを確認してください:

      • バケットのストレージクラスは 標準ストレージ です。 IA、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスはサポートされていません。

      • バケットに対して サーバー側の暗号化 が有効になっていないことを確認してください。

    • OSS にバケットが存在しない場合は、まずバケットを作成します。 (OSS が 有効化 されていることを確認してください。)

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

      2. 次の主要なパラメーターを設定し、他のパラメーターはデフォルト値のままにします。

        重要
        • このバケットはこのデータ移行でのみ使用されため、主要なパラメーターのみを設定する必要があります。 移行完了後、データ漏洩や追加料金を防ぐために、バケットを速やかに削除してください。

        • バケット作成時に サーバー側の暗号化 を有効にしないでください。

        パラメーター

        説明

        例

        [バケット名]

        バケットの名前。 名前はグローバルに一意である必要があり、バケット作成後は変更できません。

        命名規則:

        • 名前には、小文字、数字、ハイフン (-) のみ使用できます。

        • 名前の先頭と末尾は、小文字または数字である必要があります。

        • 名前の長さは 3~63 文字である必要があります。

        migratetest

        [リージョン]

        バケットが存在するリージョン。 ECS インスタンスから内部ネットワーク経由でバケットにデータをアップロードし、内部ネットワーク経由でデータを ApsaraDB RDS インスタンスに復元する場合、ECS インスタンス、バケット、ApsaraDB RDS インスタンスが同じリージョンに存在することを確認してください。

        中国 (杭州)

        [ストレージタイプ]

        [標準ストレージ] を選択します。 このトピックで説明する移行操作は、他のストレージクラスのバケットをサポートしていません。

        スタンダード

  2. バックアップファイルを OSS にアップロードします。

    セルフマネージドデータベースのバックアップが完了したら、バックアップファイルを ApsaraDB RDS インスタンスと 同じリージョン にある OSS バケットにアップロードします。 バケットと ApsaraDB RDS インスタンスが同じリージョンにある場合、バケットとインスタンスは内部ネットワーク経由で通信できます。 この場合、インターネットトラフィック料金は発生せず、データはより高速にアップロードされます。 次のいずれかの方法を使用できます:

    ossbrowser を使用したファイルのアップロード (推奨)

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

    2. この例では、Windows x64 を使用します。 ダウンロードした oss-browser-win32-x64.zip パッケージを解凍し、oss-browser.exe アプリケーションをダブルクリックします。

    3. ログオン方法として アクセスキー を選択し、Access Key ID と Access Key Secret パラメーターを設定し、その他のパラメーターはデフォルト値のままにして、ログイン をクリックします。

      説明

      AccessKey は、データセキュリティを確保するための ID 認証に使用されます。 AccessKey は機密情報として扱ってください。

    4. 移行先のバケットをクリックして、そのバケットに移動します。

    5. Upload icon をクリックし、アップロードするバックアップファイルを選択して、[開く] をクリックします。 ローカルファイルが OSS にアップロードされます。

    OSS コンソールを使用したファイルのアップロード

    説明

    バックアップファイルのサイズが 5 GB 未満の場合は、OSS コンソールで直接バックアップファイルをアップロードできます。

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

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

    3. ファイルリスト で、Upload File をクリックします。

    4. バックアップファイルを アップロードするファイル セクションにドラッグするか、ファイルの選択 をクリックして、アップロードするバックアップファイルを選択します。

    5. ページの下部にあるUpload Fileをクリックします。ローカルバックアップファイルが OSS にアップロードされます。

    OSS API を使用したファイルのアップロード (Python 3 プロジェクトの例)

    説明

    バックアップファイルのサイズが 5 GB を超える場合は、OSS API を呼び出して、マルチパートアップロードを使用してバックアップファイルを OSS バケットにアップロードしてください。

    # -*- 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("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).")
    
        # 使用される認証情報の種類を示します
        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"Error: Local file not found. Check the file_path configuration: {file_path}")
    
        # Uploader を構築します。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 を設定してください)")
    
        # アップロードを実行します (Uploader はサイズに基づいてマルチ/シングルパートの同時アップロードを自動的に選択します)
        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"Request 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"Request ID: {getattr(e, 'request_id', 'N/A')}")
            print(f"Endpoint: {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()

3. 移行スクリプトの実行

  1. SQL Server 移行スクリプト をダウンロードします。

  2. パッケージを展開した後、次のコマンドを実行して、スクリプトのパラメーターを表示します。

    python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -h

    コマンドは次の出力を返します:

    RDSSQLCreateMigrateTasksBatchly.py -k <access_key_id> -s <access_key_secret> -i <rds_instance_id> -e <oss_endpoint> -b <oss_bucket> -d <directory>

    次の表でパラメーターを説明します。

    パラメーター

    説明

    <access_key_id>

    お使いの Alibaba Cloud アカウントの AccessKey ID です。

    <access_key_secret>

    お使いの Alibaba Cloud アカウントの AccessKey Secret です。

    <rds_instance_id>

    移行先の RDS インスタンスの ID です。

    <oss_endpoint>

    バケットがある OSS リージョンのエンドポイント です。

    <oss_bucket>

    バックアップファイルを格納するバケットの名前です。

    <directory>

    バックアップファイルを格納する OSS バケット内のディレクトリです。ルートディレクトリの場合は、/ と入力します。

  3. 移行スクリプトを実行して、移行を完了します。

    このトピックでは、testdatabucket という名前の OSS バケットの Migrationdata ディレクトリから、指定された条件を満たすすべてのバックアップファイルを、インスタンス ID が rm-2zesz5774ud8s**** の ApsaraDB RDS for SQL Server インスタンスに完全に移行する例を示します。

    python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -k <yourAccessKeyID> -s <yourAccessKeySecret> -i rm-2zesz5774ud8s**** -e oss-cn-beijing.aliyuncs.com -b testdatabucket -d Migrationdata

4. 移行タスクの進捗の確認

ApsaraDB RDS インスタンスの SQL Server バージョンに応じた手順に従ってください。

SQL Server 2012 以降

ApsaraDB RDS インスタンスの左側のナビゲーションペインで、[バックアップと復元] ページに移動します。[バックアップデータのクラウド移行レコード] タブで、タスクステータス、開始時刻、終了時刻などのクラウド移行レコードを表示できます。デフォルトでは、先週のレコードが表示されます。必要に応じて時間範囲を調整してください。

説明

[タスクステータス] が [失敗] の場合、[タスクの説明] を確認するか、対象の移行タスクの横にある [ファイルの詳細を表示] をクリックして、タスクが失敗した理由を特定します。問題を修正した後、移行タスクを再実行します。

SQL Server 2008 R2

ApsaraDB RDS インスタンスの左側のナビゲーションペインで、[クラウドへのデータ移行] ページに移動します。 次に、対象の移行タスクを見つけて、その進捗を確認します。

説明

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

一般的なエラー

エラーメッセージ

原因

解決策

HTTP Status: 404 Error:InvalidAccessKeyId.NotFound Specified access key is not found. RequestID: XXXXXXXXXXXXXXXXX

OpenAPI 呼び出しに使用した AccessKey ID が正しくありません。

正しい AccessKey ID と AccessKey Secret を指定してください。

HTTP Status: 400 Error:IncompleteSignature The request signature does not conform to Aliyun standards. server string to sign is:......

OpenAPI 呼び出しに使用した AccessKey Secret が正しくありません。

RDS engine doesn't support, this is only for RDS SQL Server engine.

この解決策は ApsaraDB RDS for SQL Server のみをサポートしています。他のデータベースエンジンはサポートされていません。

移行先として ApsaraDB RDS for SQL Server インスタンスを使用してください。

Couldn't find specify RDS [XXX].

指定した RDS インスタンス ID は存在しません。

指定した RDS インスタンス ID が正しいことを確認してください。

{'status': -2, 'request-id': '', 'details': "RequestError: HTTPConnectionPool(host='xxxxxxxxxxxxxxxxx', port=80): Max retries exceeded with url: /?bucketInfo= (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10e996490>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))"}

エンドポイントが正しくないため、接続に失敗しました。

指定した エンドポイント が正しいことを確認してください。

{'status': 404,'-id': 'xxxxxxxxx', 'details': {'HostId': 'xxxxxxxxx', 'Message': 'The specified bucket does not exist.', 'Code': 'NoSuchBucket', 'RequestId': 'xxxxxxxx', 'BucketName': 'aaaatp-test-on-ecs'}}

指定した OSS バケットは存在しません。

指定した OSS バケット名が正しいことを確認してください。

There is no backup file on OSS Bucket [xxxxxx] under [xxxxxxxxx] folder, check please.

指定したフォルダーが OSS バケットに存在しないか、フォルダーに該当するデータベースのバックアップファイルが含まれていません。

フォルダーが OSS バケットに存在し、該当するデータベースのバックアップファイルが含まれていることを確認してください。

Warning!!!!!, [autotest_2005_ent_broken_full_dbcc_failed.bak] is not backup file, filtered.

バックアップファイル名が必要な命名規則に従っていません。

バックアップスクリプトを使用しない場合は、バックアップファイルを DatabaseName_BackupType_BackupTime.bak というフォーマットで命名する必要があります。例: Testdb_FULL_20180518153544.bak。

HTTP Status: 403 Error:Forbidden.RAM The user is not authorized to operate the specified resource, or this operation does not support RAM. RequestID: xxxxx{'status': 403, 'request-id': 'xxxx', 'details': {'HostId': 'atp-test-on-ecs.oss-cn-beijing.aliyuncs.com', 'Message': 'The bucket you visit is not belong to you.', 'Code': 'AccessDenied', 'RequestId': 'xxxx'}}

RAM ユーザーの権限が不十分です。

OSS と ApsaraDB RDS にアクセスするための権限を RAM ユーザーに付与する必要があります。これには、[AliyunOSSFullAccess] および [AliyunRDSFullAccess] ポリシーが必要です。

OPENAPI Response Error !!!!! : HTTP Status: <Http Status Code> Error:<Error> <Description>. RequestID: 32BB6886-775E-4BB7-A054-635664****

OpenAPI 呼び出しでエラーが返されました。

返された エラーコードとエラーメッセージ に基づいて根本原因を分析してください。

OpenAPI エラーコード

HTTP ステータスコード

エラー

メッセージ

説明

403

InvalidDBName

The specified database name is not allowed.

データベース名は無効です。システムデータベース名は使用できません。

403

IncorrectDBInstanceState

The current instance state does not allow this operation.

ApsaraDB RDS インスタンスが無効な状態です。たとえば、インスタンスが [Creating] 状態の場合などです。

400

IncorrectDBInstanceType

The current instance type does not support this operation.

インスタンスのエンジンはサポートされていません。この機能は ApsaraDB RDS for SQL Server でのみ利用できます。

400

IncorrectDBInstanceLockMode

The current instance lock mode does not support this operation.

データベースが無効なロック状態です。

400

InvalidDBName.NotFound

One or more of the specified database names do not exist, or their status does not allow the operation.

データベースが存在しません。

  • ApsaraDB RDS for SQL Server 2008 R2 の場合、まず移行先インスタンスに同じ名前のデータベースを作成する必要があります。

  • ApsaraDB RDS for SQL Server 2012 以降の場合、移行先インスタンスに同じ名前のデータベースが存在してはなりません。

400

IncorrectDBType

The database type does not support this operation.

400

IncorrectDBState

The current database state does not allow this operation.

データベースが無効な状態です。たとえば、作成中または移行が進行中の場合などです。

400

UploadLimitExceeded

The daily migration quota for the database has been exceeded.

各インスタンスのデータベースごとに 1 日あたり最大 20 回の移行が許可されています。

400

ConcurrentTaskExceeded

The daily migration quota for the instance has been exceeded.

インスタンスは 1 日あたり最大 500 回の移行に制限されています。

400

IncorrectFileExtension

The file extension is not supported.

バックアップファイルの拡張子が無効です。

400

InvalidOssUrl

The specified OSS URL is invalid.

指定した OSS ダウンロード URL は利用できません。

400

BakFileSizeExceeded

The backup file exceeds the allowed size limit.

バックアップファイルのサイズは 3 TB を超えることはできません。

400

FileSizeExceeded

The file is too large for the destination instance.

バックアップファイルを復元すると、移行先インスタンスのストレージ容量を超えてしまいます。

関連する API オペレーション

API

説明

CreateMigrateTask

OSS から ApsaraDB RDS for SQL Server インスタンスへバックアップファイルを復元し、データ移行タスクを作成します。

CreateOnlineDatabaseTask

ApsaraDB RDS for SQL Server インスタンスのバックアップデータ移行タスクのデータベースを開きます。

DescribeMigrateTasks

ApsaraDB RDS for SQL Server インスタンスのバックアップデータ移行タスクのリストを照会します。

DescribeOssDownloads

ApsaraDB RDS for SQL Server インスタンスのバックアップデータ移行タスクのバックアップファイルの詳細を照会します。