All Products
Search
Document Center

ApsaraDB RDS:Migrasi Tingkat Instans SQL Server ke Cloud

Last Updated:Nov 10, 2025

ApsaraDB RDS for SQL Server menyediakan solusi tingkat instans untuk migrasi database ke cloud. Anda dapat memigrasikan data penuh dari satu atau beberapa database pada instans SQL Server yang dikelola sendiri ke instans ApsaraDB RDS for SQL Server. Untuk melakukannya, cadangkan semua database di instans SQL Server yang dikelola sendiri, unggah file cadangan penuh ke folder yang sama di dalam Bucket OSS, lalu jalankan skrip migrasi.

Catatan

Jika Anda melakukan migrasi tingkat database, yang berarti hanya satu database dipindahkan pada satu waktu, lihat Migrating Full Backups to the Cloud dan Migrating Incremental Backups to the Cloud.

Prasyarat

  • Database sumber harus berupa database SQL Server yang dikelola sendiri.

  • Instans ApsaraDB RDS untuk SQL Server tujuan harus memenuhi kondisi berikut:

    • Ruang penyimpanan yang tersedia dari instans harus lebih besar dari ukuran file data yang akan dimigrasikan. Jika ruang tidak mencukupi, tingkatkan spesifikasi instans terlebih dahulu.

    • Untuk instans SQL Server 2008 R2: Buat database pada instans tujuan dengan nama yang sama seperti database yang akan dimigrasikan. Langkah ini tidak diperlukan untuk versi SQL Server lainnya.

  • Jika Anda menggunakan Pengguna Resource Access Management (RAM), kondisi berikut harus dipenuhi:

    • Pengguna RAM memiliki izin AliyunOSSFullAccess dan AliyunRDSFullAccess. Untuk informasi lebih lanjut tentang cara memberikan izin kepada pengguna RAM, lihat Kelola izin OSS menggunakan RAM dan Kelola izin ApsaraDB RDS menggunakan RAM.

    • Akun Alibaba Cloud Anda telah memberikan izin akun layanan ApsaraDB RDS untuk mengakses sumber daya OSS Anda.

      Klik untuk melihat metode otorisasi

      1. Pergi ke halaman Backup and Restoration dari instans ApsaraDB RDS dan klik Restore from OSS Backup.

      2. Di Data Import Wizard, klik Next dua kali untuk melanjutkan ke langkah 3. Data Import.

        Otorisasi selesai jika pesan You Have Authorized The Official RDS Service Account To Access Your OSS Resources ditampilkan di pojok kiri bawah halaman. Jika tidak, klik Authorization URL di halaman untuk memberikan otorisasi.

        image

    • Akun Alibaba Cloud Anda harus secara manual membuat kebijakan akses dan kemudian menyambungkan kebijakan tersebut ke pengguna RAM.

      Klik untuk melihat isi kebijakan

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

Keterbatasan

Solusi ini hanya mendukung full migration dan tidak mendukung migrasi tambahan (incremental migration).

Penagihan

Jika Anda menggunakan metode yang dijelaskan dalam topik ini untuk melakukan migrasi data, Anda hanya akan dikenakan biaya untuk penggunaan Bucket OSS.

Skenario

Aturan Penagihan

Mengunggah file cadangan ke Bucket OSS

Tidak dikenakan biaya.

Menyimpan file cadangan di Bucket OSS

Anda akan dikenakan biaya penyimpanan. Untuk informasi lebih lanjut, kunjungi halaman Harga dari OSS.

Memigrasikan file cadangan dari Bucket OSS ke Instans RDS Anda

  • Jika Anda memigrasikan file cadangan dari Bucket OSS ke Instans RDS melalui jaringan internal, tidak ada biaya yang timbul.

  • Jika Anda memigrasikan file cadangan melalui Internet, Anda akan dikenakan biaya untuk Bucket OSS berdasarkan lalu lintas Internet keluar. Untuk informasi lebih lanjut, kunjungi halaman Harga dari OSS.

Persiapan

1. Instal Python 3

Kunjungi situs resmi Python untuk mengunduh dan menginstal paket sesuai sistem operasi Anda. Pilih Python 3.12 atau versi lebih baru.

  • Untuk Windows: Selama instalasi, pilih kotak centang Add python.exe to PATH untuk menghindari konfigurasi manual variabel lingkungan.

  • Untuk macOS atau Linux: Instal Python melalui situs resmi atau gunakan manajer paket seperti Homebrew, apt, atau dnf. Untuk detail lebih lanjut, lihat dokumentasi resmi Python.

2. Verifikasi instalasi dan versi Python

Nama file yang dapat dieksekusi mungkin berbeda tergantung pada sistem operasi dan metode instalasi. Nama umum mencakup python, python3, dan py. Coba perintah berikut secara berurutan dan gunakan yang sesuai dengan instalasi Anda.

Windows (Command Prompt atau PowerShell)

python --version
python3 --version
py --version
  • Jika keluarannya adalah Python 3.12.x atau versi lebih baru, Python telah terinstal dan siap digunakan.

  • Jika muncul pesan 'python' is not recognized as an internal or external command..., tambahkan jalur instalasi Python ke variabel lingkungan PATH sistem secara manual.

macOS/Linux (Terminal)

python --version
python3 --version

Di beberapa sistem, perintah python mungkin masih mengarah ke versi lama. Gunakan perintah python3 untuk memastikan bahwa Python 3.12 atau versi lebih baru telah terinstal.

3. Instal dependensi SDK

pip install alibabacloud_rds20140815
pip install alibabacloud-oss-v2

1. Cadangkan semua database pada instans SQL Server yang dikelola sendiri

Penting
  • Untuk memastikan konsistensi data, jangan tulis data baru selama proses cadangan penuh. Rencanakan cadangan sebelumnya guna menghindari gangguan layanan.

  • Jika Anda tidak menggunakan skrip cadangan, pastikan file cadangan diberi nama dalam format DatabaseName_BackupType_BackupTime.bak. Sebagai contoh, Testdb_FULL_20180518153544.bak. Jika tidak, migrasi akan gagal.

  1. Unduh skrip cadangan.

  2. Klik dua kali file skrip cadangan untuk membukanya menggunakan Microsoft SQL Server Management Studio (SSMS). Untuk informasi lebih lanjut tentang cara terhubung menggunakan SSMS, lihat dokumentasi resmi.

  3. Sesuaikan parameter berikut sesuai kebutuhan.

    Klik untuk melihat contoh

    SELECT
        /**
        * Daftar database yang perlu dicadangkan, pemisah adalah : atau ,
        * kosong('') atau null: berarti semua database tidak termasuk database sistem
        * contoh: '[testdb]: TestDR, Test, readonly'
        **/
        @backup_databases_list = N'[dtstestdata],[testdb]'
        @backup_type = N'FULL',                    -- Jenis Cadangan? FULL: Cadangan penuh; DIFF: Backup diferensial; LOG: Cadangan log
        @backup_folder = N'C:\BACKUP'              -- Folder cadangan untuk menyimpan file cadangan.
        @is_run = 1                                -- Periksa atau jalankan? 1, jalankan langsung; 0, hanya periksa

    Item konfigurasi

    Deskripsi

    @backup_databases_list

    Database yang akan dicadangkan. Pisahkan beberapa database dengan titik koma (;) atau koma (,).

    @backup_type

    Tipe cadangan. Nilai yang valid:

    • FULL: cadangan penuh.

    • DIFF: backup diferensial.

    • LOG: cadangan log.

    Penting

    Dalam solusi ini, atur parameter ini ke FULL.

    @backup_folder

    Folder lokal tempat file cadangan disimpan. Jika folder tidak ada, maka akan dibuat secara otomatis.

    @is_run

    Menentukan apakah akan melakukan cadangan. Nilai yang valid:

    • 1: Lakukan cadangan.

    • 0: Hanya lakukan pemeriksaan tanpa melakukan cadangan.

  4. Jalankan skrip cadangan. Database akan dicadangkan ke folder yang telah ditentukan.

    Hasil eksekusi skrip cadangan

2. Unggah file cadangan ke OSS

  1. Sebelum mengunggah file cadangan ke OSS, Anda harus membuat bucket di OSS.

    • Jika bucket sudah ada di OSS, pastikan memenuhi persyaratan berikut:

      • Kelas penyimpanan bucket adalah Standard. Kelas penyimpanan lainnya, seperti Akses Jarang, Arsip, Penyimpanan Arsip Dingin, dan Deep Cold Archive, tidak didukung.

      • Enkripsi sisi server dinonaktifkan untuk bucket tersebut.

    • Jika tidak ada bucket yang tersedia di OSS, Anda harus membuat satu. (Pastikan Anda telah mengaktifkan OSS.)

      1. Masuk ke Konsol OSS, klik Buckets, lalu klik Create Bucket.

      2. Konfigurasikan parameter kunci berikut. Anda dapat mempertahankan nilai default untuk parameter lainnya.

        Penting
        • Bucket ini dibuat terutama untuk migrasi data ini. Anda hanya perlu mengonfigurasi parameter kunci. Anda dapat menghapus bucket setelah migrasi selesai untuk mencegah pelanggaran data dan mengurangi biaya.

        • Saat membuat bucket, jangan aktifkan enkripsi sisi server.

        Parameter

        Deskripsi

        Contoh

        Bucket Name

        Nama bucket. Nama tersebut harus unik secara global dan tidak dapat diubah setelah bucket dibuat.

        Konvensi penamaan:

        • Nama dapat berisi hanya huruf kecil, angka, dan tanda hubung (-).

        • Nama harus dimulai dan diakhiri dengan huruf kecil atau angka.

        • Nama harus memiliki panjang 3 hingga 63 karakter.

        migratetest

        Region

        Wilayah tempat bucket berada. Jika Anda mengunggah data ke bucket dari instance ECS melalui jaringan internal dan memulihkan data ke instance ApsaraDB RDS melalui jaringan internal, bucket, instance ECS, dan instance ApsaraDB RDS harus berada di wilayah yang sama.

        Tiongkok (Hangzhou)

        Storage Class

        Pilih Standard. Operasi migrasi dalam topik ini tidak mendukung bucket dari kelas penyimpanan lainnya.

        Standard

  2. Unggah file cadangan ke OSS.

    Setelah mencadangkan database lokal, unggah file cadangan ke bucket OSS yang berada di wilayah yang sama dengan instance ApsaraDB RDS Anda. Jika bucket dan instance berada di wilayah yang sama, Anda dapat menggunakan jaringan internal untuk interkoneksi layanan. Metode ini gratis untuk lalu lintas internet keluar dan memberikan kecepatan unggah data yang lebih cepat. Anda dapat menggunakan salah satu metode berikut:

    Gunakan ossbrowser untuk Mengunggah File (Disarankan)

    1. Unduh ossbrowser.

    2. Langkah-langkah berikut menggunakan sistem operasi Windows x64 sebagai contoh. Dekompres paket oss-browser-win32-x64.zip yang diunduh dan klik dua kali aplikasi oss-browser.exe.

    3. Pilih Log On With AK, konfigurasikan parameter AccessKeyId dan AccessKeySecret, pertahankan nilai default untuk parameter lainnya, lalu klik Log On.

      Catatan

      Pasangan AccessKey digunakan untuk verifikasi identitas. Jaga kerahasiaan pasangan AccessKey Anda untuk memastikan keamanan data.

      登录ossbrowser

    4. Klik bucket tujuan.进入bucket中

    5. Klik 上传图标, pilih file cadangan yang ingin Anda unggah, lalu klik Buka. File lokal diunggah ke OSS.

    Gunakan Konsol OSS untuk Mengunggah File

    Catatan

    Jika ukuran file cadangan kurang dari 5 GB, kami sarankan Anda mengunggahnya dari Konsol OSS.

    1. Masuk ke Konsol OSS.

    2. Klik Buckets lalu nama bucket tujuan.网页进入bucket

    3. Dalam daftar Files, klik Upload File.网页上传文件

    4. Anda dapat menyeret file cadangan ke area Files To Upload, atau klik Scan Files untuk memilih file.网页扫描文件

    5. Klik tombol Upload File di bagian bawah halaman untuk mengunggah file cadangan lokal ke OSS.

    Gunakan API OSS untuk Unggah Multi-Bagian (Contoh Proyek Python 3)

    Catatan

    Jika ukuran file cadangan lebih besar dari 5 GB, kami sarankan Anda memanggil API OSS untuk melakukan unggah multi-bagian ke bucket OSS.

    # -*- 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:
        """
        Buat klien v2 dari variabel lingkungan.
        - Prioritaskan menggunakan Region (disarankan), tetapi juga mendukung Endpoint kustom (opsional).
        - Kompatibel dengan AK dan STS:
            * AK: Memerlukan OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET
            * STS: Juga memerlukan OSS_SESSION_TOKEN (kompatibel dengan variabel lama OSS_SECURITY_TOKEN)
        """
        # Kompatibilitas: Jika pengguna menggunakan variabel lama OSS_SECURITY_TOKEN, peta ke OSS_SESSION_TOKEN yang diharapkan oleh v2
        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")  # Token STS (opsional)
    
        if not (ak and sk):
            raise ValueError("Tidak ditemukan AK yang valid. Atur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET. "
                             "Jika menggunakan STS, atur juga OSS_SESSION_TOKEN (atau nama lama OSS_SECURITY_TOKEN).")
    
        # Indikasikan jenis kredensial yang digunakan
        if st:
            print("Token STS (OSS_SESSION_TOKEN) terdeteksi. Menggunakan kredensial STS.")
        else:
            print("Tidak ada Token STS yang terdeteksi. Menggunakan kredensial AccessKey (AK).")
    
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Konfigurasi jaringan dasar
        cfg.region = region  # Contoh: 'cn-hangzhou'
        if endpoint:
            # Opsional: Endpoint Kustom (misalnya, jaringan internal, domain dipercepat, dll.)
            cfg.endpoint = endpoint
    
        # Anda juga dapat menambahkan konfigurasi lain di sini, seperti: 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,
    ):
        """
        Implementasikan unggah multipart bersamaan dengan unggah yang dapat dilanjutkan.
    
        :param client: Klien oss.Client yang diinisialisasi
        :param bucket_name: Nama bucket tujuan
        :param object_key: Kunci objek tujuan (tanpa nama bucket)
        :param file_path: Jalur lengkap file lokal
        :param part_size: Ukuran bagian dalam byte, default adalah 1 MB
        :param parallel_num: Jumlah thread unggah bersamaan, default adalah 4
        :param checkpoint_dir: Direktori untuk menyimpan informasi breakpoint; jika None, unggah yang dapat dilanjutkan dinonaktifkan
        """
        file_path = str(file_path)
        if not Path(file_path).exists():
            raise FileNotFoundError(f"Error: File lokal tidak ditemukan. Periksa konfigurasi file_path: {file_path}")
    
        # Bangun Pengunggah; aktifkan unggah yang dapat dilanjutkan berdasarkan apakah checkpoint_dir disediakan
        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"Mulai mengunggah file: {file_path}")
        print(f"Bucket Tujuan: {bucket_name}")
        print(f"Objek Tujuan: {object_key}")
        print(f"Ukuran bagian: {part_size} byte, Konkurensi: {parallel_num}")
        if checkpoint_dir:
            print(f"Unggah yang dapat dilanjutkan: Diaktifkan (checkpoint_dir={checkpoint_dir})")
        else:
            print("Unggah yang dapat dilanjutkan: Dinonaktifkan (atur checkpoint_dir untuk mengaktifkan)")
    
        # Eksekusi unggah (Uploader secara otomatis memilih antara unggah multi/single bagian bersamaan berdasarkan ukuran)
        result = uploader.upload_file(
            oss.PutObjectRequest(bucket=bucket_name, key=object_key),
            filepath=file_path,
        )
    
        print("-" * 30)
        print("File berhasil diunggah!")
        print(f"Status HTTP: {result.status_code}")
        print(f"ETag: {result.etag}")
        print(f"ID Permintaan: {result.request_id}")
        # Checksum CRC-64; v2 mengaktifkan validasi data secara default
        print(f"CRC64: {result.hash_crc64}")
        print("-" * 30)
    
    
    def main():
        # Sebelum menjalankan contoh kode, pastikan Anda telah mengatur variabel lingkungan yang sesuai.
        # macOS/Linux:
        #   Metode AK:
        #     export OSS_ACCESS_KEY_ID=YOUR_AK_ID
        #     export OSS_ACCESS_KEY_SECRET=YOUR_AK_SECRET
        #   Metode 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
    
        # ===================== Parameter (modifikasi sesuai kebutuhan) =====================
        # Contoh Wilayah: 'cn-hangzhou'; kami sarankan menggunakan Wilayah terlebih dahulu
        region = "cn-hangzhou"
    
        # Opsional: Endpoint Kustom (untuk jaringan internal, domain khusus, nama domain yang dipercepat, dll.)
        # Contoh: 'https://oss-cn-hangzhou.aliyuncs.com'
        endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'  
    
        # Bucket dan Objek
        bucket_name = "examplebucket"
        object_key = "test.bak"
    
        # Jalur lengkap file lokal untuk diunggah.
        # Contoh Windows: r'D:\localpath\examplefile.txt'  (perhatikan r di awal)
        # Contoh macOS/Linux: '/Users/test/examplefile.txt'
        file_path = r"D:\oss\test.bak"
    
        # Sharding dan konkurensi
        part_size = 1 * 1024 * 1024  # Default adalah 1 MB; OSS memerlukan ukuran bagian minimum 100 KB
        parallel_num = 4
    
        # Direktori unggah yang dapat dilanjutkan (berikan None untuk menonaktifkan; kami sarankan menentukan direktori yang dapat ditulis)
        checkpoint_dir = str(Path.cwd() / ".oss_checkpoints")
        # =================== Akhir parameter ===================
    
        print("Eksekusi skrip dimulai...")
        try:
            client = get_client_from_env(region=region, endpoint=endpoint)
            # Jika unggah yang dapat dilanjutkan diaktifkan, pastikan direktori ada
            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:
            # Kesalahan yang dikembalikan oleh server OSS
            print("\nTerjadi kesalahan sisi server OSS.")
            print(f"Status HTTP: {getattr(e, 'status_code', 'N/A')}")
            print(f"Kode Kesalahan: {getattr(e, 'code', 'N/A')}")
            print(f"Pesan: {getattr(e, 'message', 'N/A')}")
            print(f"ID Permintaan: {getattr(e, 'request_id', 'N/A')}")
            print(f"Endpoint: {getattr(e, 'request_target', 'N/A')}")
        except oss_ex.BaseError as e:
            # Kesalahan klien SDK OSS/local/serialisasi/deserialisasi/kredensial
            print("\nTerjadi kesalahan sisi klien SDK OSS.")
            print(str(e))
        except Exception as e:
            print(f"\nTerjadi kesalahan tidak dikenal: {e}")
    
    
    if __name__ == "__main__":
        main()

3. Jalankan skrip migrasi untuk memigrasikan database ke ApsaraDB RDS

  1. Unduh skrip migrasi SQL Server.

  2. Setelah mengekstrak paket tersebut, jalankan perintah berikut untuk melihat parameter yang diperlukan untuk skrip.

    python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -h

    Hasil berikut akan ditampilkan:

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

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    access_key_id

    ID AccessKey dari akun Alibaba Cloud yang memiliki instans ApsaraDB RDS tujuan.

    access_key_secret

    Rahasia AccessKey dari akun Alibaba Cloud yang memiliki instans ApsaraDB RDS tujuan.

    rds_instance_id

    ID dari instans ApsaraDB RDS tujuan.

    oss_endpoint

    Titik akhir bucket tempat file cadangan disimpan.

    oss_bucket

    Nama bucket tempat file cadangan disimpan.

    directory

    Folder di dalam bucket OSS tempat file cadangan disimpan. Jika file berada di direktori root, masukkan /.

  3. Jalankan skrip migrasi untuk menyelesaikan tugas migrasi.

    Contoh ini menunjukkan cara memigrasikan semua file cadangan yang memenuhi syarat dari folder Migrationdata di bucket OSS testdatabucket ke instans ApsaraDB RDS for SQL Server dengan ID rm-2zesz5774ud8s****.

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

4. Lihat kemajuan tugas migrasi

Pilih metode sesuai versi instans ApsaraDB RDS for SQL Server Anda.

SQL Server 2012 dan yang lebih baru

Di panel navigasi sebelah kiri instans ApsaraDB RDS, klik Backup and Restoration. Pada tab Data Migration Records, Anda dapat melihat catatan migrasi, termasuk status tugas, waktu mulai, dan waktu selesai. Secara default, catatan dari minggu terakhir ditampilkan. Anda dapat menyesuaikan rentang waktu sesuai kebutuhan.

image

Catatan

Jika Task Status adalah Failed, periksa Task Description atau klik View File Details untuk tugas migrasi yang gagal guna mengidentifikasi penyebab kegagalan. Setelah memperbaiki masalah tersebut, jalankan skrip migrasi data kembali.

SQL Server 2008 R2

Di panel navigasi sebelah kiri instans ApsaraDB RDS, klik Data Migration To Cloud. Temukan tugas migrasi target untuk melihat kemajuannya.

Catatan

Jika Task Status adalah Failed, periksa Task Description atau klik View File Details untuk tugas migrasi yang gagal guna mengidentifikasi penyebab kegagalan. Setelah memperbaiki masalah tersebut, jalankan skrip migrasi data kembali.

Kesalahan umum

Pesan Kesalahan

Penyebab

Solusi

HTTP Status: 404 Error:InvalidAccessKeyId.NotFound Access key yang ditentukan tidak ditemukan. RequestID: XXXXXXXXXXXXXXXXX

ID AccessKey yang digunakan untuk memanggil operasi OpenAPI salah.

Masukkan ID AccessKey dan Rahasia AccessKey yang benar.

HTTP Status: 400 Error:IncompleteSignature Tanda tangan permintaan tidak sesuai dengan standar Aliyun. string server untuk ditandatangani adalah:......

Rahasia AccessKey yang digunakan untuk memanggil operasi OpenAPI salah.

Mesin RDS tidak mendukung, ini hanya untuk mesin RDS SQL Server.

Solusi ini hanya mendukung ApsaraDB RDS untuk SQL Server. Mesin database lainnya tidak didukung.

Gunakan instans ApsaraDB RDS untuk SQL Server sebagai instans tujuan.

Tidak dapat menemukan RDS [XXX] yang ditentukan.

ID instans ApsaraDB RDS tidak ada.

Periksa apakah ID instans ApsaraDB RDS sudah benar.

{'status': -2, 'request-id': '', 'details': "RequestError: HTTPConnectionPool(host='xxxxxxxxxxxxxxxxx', port=80): Maksimum percobaan ulang tercapai dengan url: /?bucketInfo= (Disebabkan oleh NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10e996490>: Gagal membuat koneksi baru: [Errno 8] nodename nor servname provided, or not known',))"}

Titik akhir salah, menyebabkan koneksi gagal.

Periksa apakah titik akhir yang ditentukan sudah benar.

{'status': 404,'-id': 'xxxxxxxxx', 'details': {'HostId': 'xxxxxxxxx', 'Message': 'Bucket yang ditentukan tidak ada.', 'Code': 'NoSuchBucket', 'RequestId': 'xxxxxxxx', 'BucketName': 'aaaatp-test-on-ecs'}}

Bucket OSS tidak ada.

Periksa apakah bucket OSS yang ditentukan sudah benar.

Tidak ada file cadangan di Bucket OSS [xxxxxx] di bawah folder [xxxxxxxxx], silakan periksa.

Folder yang ditentukan tidak ada di bucket OSS, atau folder tersebut tidak berisi file cadangan database yang memenuhi syarat.

Periksa apakah folder ada di bucket OSS dan apakah folder tersebut berisi file cadangan database yang memenuhi syarat.

Peringatan!!!!!, [autotest_2005_ent_broken_full_dbcc_failed.bak] bukan file cadangan, difilter.

Nama file cadangan tidak mengikuti konvensi penamaan.

Jika Anda tidak menggunakan skrip cadangan, Anda harus menamai file cadangan dalam format nama_database_tipe_cadangan_waktu_cadangan.bak. Sebagai contoh, Testdb_FULL_20180518153544.bak.

HTTP Status: 403 Error:Forbidden.RAM Pengguna tidak memiliki izin untuk mengoperasikan sumber daya yang ditentukan, atau operasi ini tidak mendukung RAM. RequestID: xxxxx{'status': 403, 'request-id': 'xxxx', 'details': {'HostId': 'atp-test-on-ecs.oss-cn-beijing.aliyuncs.com', 'Message': 'Bucket yang Anda kunjungi tidak milik Anda.', 'Code': 'AccessDenied', 'RequestId': 'xxxx'}}

Pengguna RAM tidak memiliki izin yang cukup.

Anda harus memberikan pengguna RAM izin untuk menggunakan OSS dan ApsaraDB RDS (izin AliyunOSSFullAccess dan AliyunRDSFullAccess).

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

Pesan kesalahan dikembalikan saat memanggil operasi OpenAPI.

Analisis penyebab berdasarkan kode kesalahan dan pesan kesalahan.

Kode Kesalahan OpenAPI

Kode Status HTTP

Kesalahan

Deskripsi

Deskripsi

403

InvalidDBName

Nama database yang ditentukan tidak diizinkan.

Nama database tidak valid. Anda tidak dapat menggunakan nama database sistem.

403

IncorrectDBInstanceState

Status instans DB saat ini tidak mendukung operasi ini.

Instans ApsaraDB RDS berada dalam status tidak valid. Sebagai contoh, status instans adalah Creating.

400

IncorrectDBInstanceType

Tipe instans DB saat ini tidak mendukung operasi ini.

Mesin database tidak didukung. Fitur ini hanya tersedia untuk ApsaraDB RDS untuk SQL Server.

400

IncorrectDBInstanceLockMode

Mode kunci instans DB saat ini tidak mendukung operasi ini.

Database berada dalam status kunci yang tidak valid.

400

InvalidDBName.NotFound

Satu atau lebih nama DB yang ditentukan tidak ada atau status DB tidak mendukung.

Database tidak ada.

  • Untuk ApsaraDB RDS untuk SQL Server 2008 R2, Anda harus terlebih dahulu membuat database dengan nama yang sama.

  • Untuk ApsaraDB RDS untuk SQL Server 2012 dan versi selanjutnya, database dengan nama yang sama tidak boleh ada.

400

IncorrectDBType

Tipe DB saat ini tidak mendukung operasi ini.

Tipe database tidak mendukung operasi ini.

400

IncorrectDBState

Status DB saat ini tidak mendukung operasi ini.

Database berada dalam status tidak valid. Sebagai contoh, database sedang dibuat atau tugas migrasi sedang berlangsung.

400

UploadLimitExceeded

UploadTimesQuotaExceeded: Melebihi jumlah unggahan harian untuk DB ini.

Jumlah operasi migrasi melebihi batas. Anda dapat melakukan maksimal 20 operasi migrasi per database pada setiap instans per hari.

400

ConcurrentTaskExceeded

Tugas bersamaan melebihi jumlah yang diizinkan.

Jumlah operasi migrasi melebihi batas. Anda dapat melakukan maksimal 500 operasi migrasi pada setiap instans per hari.

400

IncorrectFileExtension

Ekstensi file tidak didukung.

Ekstensi file dari file cadangan tidak valid.

400

InvalidOssUrl

URL oss yang ditentukan tidak valid.

URL unduhan OSS yang disediakan tidak tersedia.

400

BakFileSizeExceeded

Melebihi ukuran file bak yang diizinkan.

File cadangan database melebihi batas ukuran. Ukuran maksimum adalah 3 TB.

400

FileSizeExceeded

Melebihi ukuran file yang diizinkan untuk instans DB.

File cadangan yang dipulihkan akan melebihi kapasitas penyimpanan instans saat ini.

Operasi API terkait

API

Deskripsi

CreateMigrateTask

Memulihkan file cadangan dari OSS ke instans ApsaraDB RDS for SQL Server dan membuat tugas migrasi data.

CreateOnlineDatabaseTask

Membuka database dari tugas migrasi data ApsaraDB RDS for SQL Server.

DescribeMigrateTasks

Memeriksa daftar tugas migrasi data untuk instans ApsaraDB RDS for SQL Server.

DescribeOssDownloads

Memeriksa detail file dari tugas migrasi data ApsaraDB RDS for SQL Server.