All Products
Search
Document Center

ApsaraDB RDS:Migrasi cadangan penuh ke cloud

Last Updated:Aug 27, 2026

ApsaraDB RDS untuk SQL Server menyediakan solusi untuk memindahkan database SQL Server yang dikelola sendiri ke Alibaba Cloud. Anda cukup mengunggah data cadangan penuh dari database SQL Server yang dikelola sendiri ke Alibaba Cloud Object Storage Service (OSS), lalu mengimpor data tersebut ke database ApsaraDB RDS untuk SQL Server yang ditentukan melalui Konsol ApsaraDB RDS. Solusi ini cocok untuk skenario seperti pencadangan data, migrasi data, dan pemulihan bencana.

Prasyarat

  • Instans ApsaraDB RDS untuk SQL Server harus memenuhi persyaratan berikut:

    • Ruang penyimpanan tersisa pada instans harus lebih besar dari ukuran file data yang akan dimigrasikan. Jika ruang penyimpanan tidak mencukupi, upgrade penyimpanan instans terlebih dahulu.

    • Jika instans menjalankan SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan cloud disk, pastikan instans tidak berisi database yang memiliki nama yang sama dengan database yang akan dimigrasikan.

    • Jika instans menjalankan SQL Server 2008 R2 dengan high-performance local disk, pastikan database yang memiliki nama yang sama dengan database yang akan dimigrasikan telah dibuat pada instans tersebut.

  • Jika Anda masuk sebagai Pengguna RAM, persyaratan berikut harus dipenuhi:

    • Pengguna RAM telah diberikan 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 (akun utama) telah memberikan otorisasi kepada akun layanan resmi ApsaraDB RDS untuk mengakses resource OSS Anda.

      Klik untuk melihat metode otorisasi

      1. Buka halaman Restoration instans ApsaraDB RDS, lalu klik Restore Backup Data from OSS.

      2. Pada halaman Import Guide, klik Next dua kali hingga mencapai langkah 3. Import Data.

        Jika pesan You have authorized the ApsaraDB RDS official service account to access your OSS resources muncul di pojok kiri bawah halaman, berarti otorisasi telah selesai. Jika tidak, otorisasi belum lengkap. Dalam hal ini, klik Authorization URL pada halaman tersebut untuk memberikan otorisasi.

        image

    • Buat kebijakan izin secara manual di akun Alibaba Cloud Anda (akun utama), lalu lampirkan kebijakan tersebut ke Pengguna RAM.

      Klik untuk melihat isi kebijakan

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

Catatan

  • Lingkup migrasi: Solusi ini hanya mendukung migrasi satu database (tingkat database). Untuk memigrasikan beberapa database atau semua database, gunakan solusi migrasi tingkat instans.

  • Kompatibilitas versi: File cadangan yang dibuat di lingkungan SQL Server yang dikelola sendiri tidak dapat dimigrasikan ke instans ApsaraDB RDS untuk SQL Server yang menjalankan versi lebih rendah.

  • Manajemen izin: Setelah Anda memberikan izin kepada akun layanan ApsaraDB RDS untuk mengakses OSS, sistem akan membuat role bernama AliyunRDSImportRole di RAM. Jangan mengubah atau menghapus role tersebut. Jika tidak, tugas migrasi akan gagal. Jika Anda secara tidak sengaja mengubah atau menghapus role tersebut, berikan kembali izin melalui wizard migrasi data.

  • Manajemen akun: Setelah migrasi selesai, akun dari database asli menjadi tidak tersedia. Buat ulang akun di Konsol ApsaraDB RDS.

  • Retensi file OSS: Sebelum tugas migrasi selesai, jangan menghapus file cadangan dari OSS. Jika tidak, tugas akan gagal.

  • Persyaratan file cadangan:

    • Nama file: Nama file tidak boleh mengandung karakter khusus seperti !@#$%^&*()_+-=. Jika tidak, migrasi akan gagal.

    • Ekstensi file: File cadangan yang didukung oleh ApsaraDB RDS meliputi file .bak (cadangan penuh), .diff (backup diferensial), dan file .trn atau .log (cadangan log). File jenis lain tidak dapat dikenali.

    • Jenis file: Hanya file cadangan penuh yang dapat diunggah. File backup diferensial dan file cadangan log tidak didukung.

    • Sumber file: Jika data sumber adalah file cadangan penuh ApsaraDB RDS untuk SQL Server yang sebelumnya diunduh (dalam format .zip secara default), ekstrak terlebih dahulu menjadi file .bak sebelum memigrasikan data ke cloud.

Penagihan

Hanya biaya terkait OSS yang dikenakan dalam solusi ini. Untuk informasi lebih lanjut, lihat berikut ini:

Skenario

Penagihan

Unggah file cadangan database yang dikelola sendiri ke OSS

Gratis.

Simpan file cadangan di OSS

Dikenakan biaya penyimpanan OSS. Untuk informasi lebih lanjut tentang penagihan, lihat Harga OSS.

Migrasikan file cadangan dari OSS ke ApsaraDB RDS

  • Jika Anda memigrasikan file cadangan ke ApsaraDB RDS melalui jaringan internal, tidak ada biaya yang dikenakan.

  • Jika Anda memigrasikan file cadangan melalui Internet, dikenakan biaya lalu lintas outbound OSS. Untuk informasi lebih lanjut tentang penagihan, lihat Harga OSS.

Persiapan

Jalankan pernyataan DBCC CHECKDB di lingkungan database yang dikelola sendiri untuk memastikan bahwa database tidak mengandung allocation errors atau consistency errors. Jika database dalam kondisi normal, hasil berikut akan dikembalikan:

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

1. Cadangkan database yang dikelola sendiri

Pilih solusi berdasarkan versi instans ApsaraDB RDS untuk SQL Server Anda.

SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan cloud disk

Catatan

Sebelum membuat cadangan penuh untuk database yang dikelola sendiri, pastikan penulisan data telah dihentikan. Data yang ditulis selama proses pencadangan tidak termasuk dalam file cadangan.

  1. Jalankan perintah berikut untuk memeriksa model recovery saat ini dari database sumber:

    SELECT
        name AS DatabaseName,
        recovery_model_desc AS RecoveryModel,
        state_desc AS State
    FROM sys.databases
    ORDER BY name;

    Sebelum membuat cadangan produksi untuk migrasi ke ApsaraDB RDS, ubah model recovery database menjadi FULL:

    ALTER DATABASE [db_simple] SET RECOVERY FULL WITH NO_WAIT;
  2. Unduh skrip pencadangan, lalu buka skrip pencadangan tersebut di SQL Server Management Studio (SSMS).

  3. Ubah parameter berikut dalam pernyataan SELECT skrip. Parameter tersebut berada di bawah YOU HAVE TO INIT PUBLIC VARIABLES HERE dalam skrip.

    Parameter

    Deskripsi

    @backup_databases_list

    Database yang ingin Anda cadangkan. Pisahkan beberapa database dengan titik koma (;) atau koma (,).

    @backup_type

    Jenis pencadangan. Nilai yang valid:

    • FULL: cadangan penuh.

    • DIFF: backup diferensial.

    • LOG: cadangan log.

    @backup_folder

    Direktori lokal tempat file cadangan disimpan. Jika direktori tidak ada, direktori akan dibuat secara otomatis.

    @is_run

    Menentukan apakah pencadangan dilakukan. Nilai yang valid:

    • 1: melakukan pencadangan.

    • 0: hanya melakukan pemeriksaan dan tidak melakukan pencadangan.

  4. Jalankan skrip pencadangan.

SQL Server 2008 R2 dengan high-performance local disk

  1. Buka Microsoft SQL Server Management Studio (SSMS).

  2. Login ke database yang ingin Anda migrasikan.

  3. Jalankan perintah berikut untuk memeriksa model recovery saat ini dari database sumber:

    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
    • Jika nilai model dalam hasil kueri bukan FULL, lakukan Langkah 4.

    • Jika nilai model dalam hasil kueri adalah FULL, lakukan Langkah 5.

  4. Jalankan perintah berikut untuk mengatur model recovery database sumber menjadi FULL:

    ALTER DATABASE [dbname] SET RECOVERY FULL;
    GO
    ALTER DATABASE [dbname] SET AUTO_CLOSE OFF;
    GO
    Penting

    Setelah model recovery diatur ke FULL, lebih banyak log SQL Server yang dihasilkan. Pastikan ruang disk yang tersedia mencukupi.

  5. Jalankan perintah berikut untuk mencadangkan database sumber.

    Dalam contoh ini, database dbtest dicadangkan ke file backup.bak.

    USE master;
    GO
    BACKUP DATABASE [dbtest] to disk ='d:\backup\backup.bak' WITH COMPRESSION,INIT;
    GO
  6. Jalankan perintah berikut untuk memverifikasi integritas file cadangan:

    USE master
     GO
     RESTORE FILELISTONLY 
       FROM DISK = N'D:\backup\backup.bak';
    Penting
    • Jika set hasil dikembalikan, file cadangan valid.

    • Jika terjadi error, lakukan pencadangan ulang.

  7. Opsional: Jalankan perintah berikut untuk mengembalikan model recovery database:

    Penting

    Jika model recovery database sudah FULL, lewati langkah ini.

    ALTER DATABASE [dbname] SET RECOVERY SIMPLE;
    GO

2. Unggah file cadangan ke OSS

Pilih solusi berdasarkan versi instans ApsaraDB RDS untuk SQL Server Anda.

SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan cloud disk

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

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

      • storage class bucket adalah Standard. Kelas penyimpanan IA, Archive, Cold Archive, dan Deep Cold Archive tidak didukung.

      • Server-side encryption tidak diaktifkan untuk bucket tersebut.

    • Jika belum ada bucket di OSS, buat bucket terlebih dahulu. (Pastikan OSS telah diaktifkan.)

      1. Login ke Konsol OSS, klik Buckets, lalu klik Create bucket.

      2. Konfigurasi parameter kunci berikut dan gunakan nilai default untuk parameter lainnya.

        Penting
        • Bucket hanya digunakan untuk migrasi data ini, sehingga Anda hanya perlu mengonfigurasi parameter kunci. Setelah migrasi selesai, segera hapus bucket untuk mencegah kebocoran data dan biaya tambahan.

        • Jangan aktifkan server-side encryption saat membuat bucket.

        Parameter

        Deskripsi

        Contoh

        Bucket Name

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

        Aturan penamaan:

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

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

        • Nama harus terdiri dari 3 hingga 63 karakter.

        migratetest

        Region

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

        China (Hangzhou)

        Storage Type

        Pilih Standard. Operasi migrasi yang dijelaskan dalam topik ini tidak mendukung bucket dengan kelas penyimpanan lain.

        Standard

  2. Unggah file cadangan ke OSS.

    Setelah pencadangan database yang dikelola sendiri selesai, unggah file cadangan ke bucket OSS yang berada di wilayah yang sama dengan instans ApsaraDB RDS Anda. Jika bucket dan instans ApsaraDB RDS berada di wilayah yang sama, bucket dan instans dapat berkomunikasi melalui jaringan internal. Dalam hal ini, tidak ada biaya lalu lintas Internet yang dikenakan dan data diunggah dengan kecepatan lebih tinggi. Anda dapat menggunakan salah satu metode berikut:

    Unggah file menggunakan ossbrowser (direkomendasikan)

    1. Unduh ossbrowser.

    2. Dalam contoh ini, Windows x64 digunakan. Ekstrak paket oss-browser-win32-x64.zip yang diunduh, lalu klik ganda aplikasi oss-browser.exe.

    3. Pilih AK sebagai metode login, konfigurasi parameter Access Key ID dan Access Key Secret, gunakan nilai default untuk parameter lainnya, lalu klik Log On.

      Catatan

      AccessKey digunakan untuk otentikasi identitas guna memastikan keamanan data. Simpan AccessKey Anda secara rahasia.

      Log on to ossbrowser

    4. Klik bucket tujuan untuk membuka bucket tersebut.Open the bucket

    5. Klik Upload icon, pilih file cadangan yang ingin Anda unggah, lalu klik Open. File lokal diunggah ke OSS.

    Unggah file menggunakan Konsol OSS

    Catatan

    Jika ukuran file cadangan kurang dari 5 GB, unggah file cadangan langsung di Konsol OSS.

    1. Login ke Konsol OSS.

    2. Klik Buckets, lalu klik nama bucket tujuan.Open the bucket in the console

    3. Di bagian Files, klik Upload File.Upload a file in the console

    4. Seret file cadangan ke bagian Files to Upload, atau klik Select Files dan pilih file cadangan yang ingin Anda unggah.Select files to upload

    5. Klik Upload File di bagian bawah halaman. File cadangan lokal diunggah ke OSS.

    Unggah file menggunakan API OSS (contoh proyek Python 3)

    Catatan

    Jika ukuran file cadangan lebih dari 5 GB, panggil operasi API OSS untuk mengunggah file cadangan ke bucket OSS menggunakan unggah multi-bagian.

    # -*- 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()

SQL Server 2008 R2 dengan high-performance local disk

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

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

      • storage class bucket adalah Standard. Kelas penyimpanan IA, Archive, Cold Archive, dan Deep Cold Archive tidak didukung.

      • Server-side encryption tidak diaktifkan untuk bucket tersebut.

    • Jika belum ada bucket di OSS, buat bucket terlebih dahulu. (Pastikan OSS telah diaktifkan.)

      1. Login ke Konsol OSS, klik Buckets, lalu klik Create bucket.

      2. Konfigurasi parameter kunci berikut dan gunakan nilai default untuk parameter lainnya.

        Penting
        • Bucket hanya digunakan untuk migrasi data ini, sehingga Anda hanya perlu mengonfigurasi parameter kunci. Setelah migrasi selesai, segera hapus bucket untuk mencegah kebocoran data dan biaya tambahan.

        • Jangan aktifkan server-side encryption saat membuat bucket.

        Parameter

        Deskripsi

        Contoh

        Bucket Name

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

        Aturan penamaan:

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

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

        • Nama harus terdiri dari 3 hingga 63 karakter.

        migratetest

        Region

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

        China (Hangzhou)

        Storage Type

        Pilih Standard. Operasi migrasi yang dijelaskan dalam topik ini tidak mendukung bucket dengan kelas penyimpanan lain.

        Standard

  2. Unggah file cadangan ke OSS.

    Setelah pencadangan database yang dikelola sendiri selesai, unggah file cadangan ke bucket OSS yang berada di wilayah yang sama dengan instans ApsaraDB RDS Anda. Jika bucket dan instans ApsaraDB RDS berada di wilayah yang sama, bucket dan instans dapat berkomunikasi melalui jaringan internal. Dalam hal ini, tidak ada biaya lalu lintas Internet yang dikenakan dan data diunggah dengan kecepatan lebih tinggi. Anda dapat menggunakan salah satu metode berikut:

    Unggah file menggunakan ossbrowser (direkomendasikan)

    1. Unduh ossbrowser.

    2. Dalam contoh ini, Windows x64 digunakan. Ekstrak paket oss-browser-win32-x64.zip yang diunduh, lalu klik ganda aplikasi oss-browser.exe.

    3. Pilih AK sebagai metode login, konfigurasi parameter Access Key ID dan Access Key Secret, gunakan nilai default untuk parameter lainnya, lalu klik Log On.

      Catatan

      AccessKey digunakan untuk otentikasi identitas guna memastikan keamanan data. Simpan AccessKey Anda secara rahasia.

      Log on to ossbrowser

    4. Klik bucket tujuan untuk membuka bucket tersebut.Open the bucket

    5. Klik Upload icon, pilih file cadangan yang ingin Anda unggah, lalu klik Open. File lokal diunggah ke OSS.

    Unggah file menggunakan Konsol OSS

    Catatan

    Jika ukuran file cadangan kurang dari 5 GB, unggah file cadangan langsung di Konsol OSS.

    1. Login ke Konsol OSS.

    2. Klik Buckets, lalu klik nama bucket tujuan.Open the bucket in the console

    3. Di bagian Files, klik Upload File.Upload a file in the console

    4. Seret file cadangan ke bagian Files to Upload, atau klik Select Files dan pilih file cadangan yang ingin Anda unggah.Select files to upload

    5. Klik Upload File di bagian bawah halaman. File cadangan lokal diunggah ke OSS.

    Unggah file menggunakan API OSS (contoh proyek Python 3)

    Catatan

    Jika ukuran file cadangan lebih dari 5 GB, panggil operasi API OSS untuk mengunggah file cadangan ke bucket OSS menggunakan unggah multi-bagian.

    # -*- 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()
  3. Tentukan periode validitas URL file cadangan dan dapatkan URL file cadangan.

    1. Login ke Konsol OSS.

    2. Klik Buckets, lalu klik nama bucket tujuan.

    3. Di panel navigasi sebelah kiri, pilih File Management > Files.

    4. Klik Details di kolom Actions file cadangan database tujuan, lalu ubah Expiration (Seconds) menjadi 28800 detik, yaitu 8 jam, di panel yang muncul.

      Penting

      URL file cadangan diperlukan saat Anda memigrasikan file cadangan dari OSS ke ApsaraDB RDS. Jika URL kedaluwarsa sebelum migrasi selesai, migrasi data akan gagal.

    5. Klik Copy Object URL untuk mendapatkan URL file cadangan.

      Copy file URL

    6. Modifikasi URL file cadangan.

      URL yang Anda peroleh adalah URL publik file secara default. Untuk memigrasikan data melalui jaringan internal, ubah endpoint dalam URL file ke endpoint internal.

      Sebagai contoh, jika URL file cadangan adalah http://rdstest.oss-cn-shanghai.aliyuncs.com/testmigraterds_20170906143807_FULL.bak?Expires=15141****&OSSAccessKeyId=TMP****, ubah oss-cn-shanghai.aliyuncs.com dalam URL menjadi oss-cn-shanghai-internal.aliyuncs.com.

      Penting

      Endpoint internal berbeda-beda berdasarkan jenis jaringan dan wilayah. Untuk informasi lebih lanjut, lihat Wilayah dan endpoint.

3. Impor data cadangan OSS ke ApsaraDB RDS

Pilih solusi berdasarkan versi instans ApsaraDB RDS untuk SQL Server Anda.

SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan cloud disk

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Lalu, temukan instans RDS dan klik ID instans tersebut.

  2. Di panel navigasi sebelah kiri, pilih Restoration.

  3. Klik Restore Backup Data from OSS di bagian atas halaman.

  4. Pada halaman Import Guide, klik Next dua kali untuk menuju langkah impor data.

    Catatan
    • Saat pertama kali menggunakan fitur migrasi data cadangan OSS, Anda harus memberikan otorisasi kepada akun layanan ApsaraDB RDS untuk mengakses OSS. Klik Authorization URL dan konfirmasi otorisasi. Jika tidak, daftar drop-down OSS Bucket akan kosong karena masalah izin.

    • Jika file tujuan tidak ditampilkan di halaman, periksa apakah ekstensi file cadangan di OSS memenuhi persyaratan (Anda dapat melihat persyaratan ekstensi di bagian Catatan dalam topik ini), dan pastikan instans ApsaraDB RDS dan bucket OSS berada di wilayah yang sama.

  5. Konfigurasi parameter berikut.

    Parameter

    Deskripsi

    Database Name

    Nama database tempat data cadangan diimpor pada instans ApsaraDB RDS tujuan. Nama harus sesuai dengan aturan penamaan resmi SQL Server.

    Penting
    • Sebelum memigrasikan data ke cloud, pastikan tidak ada database dengan nama yang sama dengan database yang akan dipulihkan dari file cadangan pada instans tujuan dan tidak ada file database yang tidak terpasang dengan nama yang sama. Jika keduanya tidak ada, Anda dapat memulihkan database menggunakan file database yang memiliki nama yang sama dengan nama database target dalam set cadangan.

    • Jika database dengan nama yang sama dengan database yang akan dipulihkan dari file cadangan ada pada instans tujuan atau file database yang tidak terpasang dengan nama yang sama ada, migrasi akan gagal.

    OSS Bucket

    Pilih bucket OSS tempat file cadangan disimpan.

    OSS File

    Klik ikon Search icon di sebelah kanan untuk mencari file cadangan berdasarkan awalan nama file. Nama file, ukuran file, dan waktu pembaruan setiap file ditampilkan. Pilih file cadangan yang ingin Anda migrasikan.

    Cloud Migration Method

    • Immediate Access (Only One Full Backup): migrasi penuh. Opsi ini cocok untuk skenario di mana hanya satu file cadangan penuh digunakan untuk migrasi. Dalam contoh ini, Immediate Access (Only One Full Backup) dipilih. Dalam hal ini, BackupMode = FULL dan IsOnlineDB = True dalam operasi CreateMigrateTask.

    • Access Pending (Incremental Backup or Log Files): migrasi inkremental. Opsi ini cocok untuk skenario di mana file cadangan penuh bersama dengan file cadangan log atau file backup diferensial digunakan untuk migrasi. Dalam hal ini, BackupMode = UPDF dan IsOnlineDB = False dalam operasi CreateMigrateTask.

    Consistency Check Mode

    • Asynchronous DBCC: Sistem tidak menjalankan DBCC CHECKDB saat database dibuka. Sebaliknya, sistem menjalankan DBCC CHECKDB secara asinkron setelah tugas pembukaan database selesai. Ini mengurangi overhead waktu pembukaan database (DBCC CHECKDB memakan waktu lama untuk database besar) dan mempersingkat waktu henti layanan. Jika layanan Anda sangat sensitif terhadap waktu henti dan Anda tidak peduli dengan hasil DBCC CHECKDB, gunakan DBCC asinkron. Dalam hal ini, CheckDBMode = AsyncExecuteDBCheck dalam operasi CreateMigrateTask.

    • Synchronous DBCC: Dibandingkan dengan DBCC asinkron, DBCC sinkron cocok untuk pengguna yang peduli dengan hasil DBCC CHECKDB dan ingin mengidentifikasi kesalahan konsistensi data di database yang dikelola sendiri. Dalam hal ini, waktu yang dibutuhkan untuk membuka database meningkat. Dalam hal ini, CheckDBMode = SyncExecuteDBCheck dalam operasi CreateMigrateTask.

  6. Klik OK.

    Tunggu hingga tugas migrasi selesai. Anda dapat mengklik Refresh untuk melihat status terbaru tugas. Jika tugas migrasi gagal, pecahkan masalah berdasarkan pesan dalam deskripsi tugas. Untuk informasi lebih lanjut, lihat bagian Kesalahan umum dalam topik ini.

    Catatan

    Setelah migrasi data selesai, sistem akan memulai pencadangan pada waktu cadangan yang ditentukan berdasarkan kebijakan pencadangan otomatis instans ApsaraDB RDS. Anda dapat mengubah waktu cadangan secara manual. Set cadangan yang dihasilkan berisi data yang dimigrasikan. Anda dapat melihat set cadangan di halaman Restoration instans ApsaraDB RDS.

    Jika waktu cadangan belum tiba tetapi Anda ingin menghasilkan cadangan di cloud sesegera mungkin, Anda dapat melakukan pencadangan manual.

SQL Server 2008 R2 dengan high-performance local disk

  1. Login ke Konsol ApsaraDB RDS dan buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Lalu, temukan instans RDS dan klik ID instans tersebut.

  2. Di panel navigasi sebelah kiri, klik Databases.

  3. Temukan database tujuan dan klik Migrate Backup Files from OSS di kolom Actions.

  4. Di kotak dialog Import Guide, baca pesan tersebut, lalu klik Next.

  5. Baca pesan tentang unggah OSS, lalu klik Next.

  6. Di bidang OSS URL of the Backup File, masukkan URL OSS file cadangan, lalu klik OK.

    Enter the OSS URL of the backup file

    Catatan

    Instans ApsaraDB RDS untuk SQL Server yang menjalankan SQL Server 2008 R2 dengan high-performance local disk hanya mendukung solusi yang memigrasikan file cadangan penuh ke cloud sekaligus.

4. Lihat progres migrasi cadangan

Pilih solusi berdasarkan versi instans ApsaraDB RDS untuk SQL Server Anda.

SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan cloud disk

Buka halaman Restoration di panel navigasi sebelah kiri instans ApsaraDB RDS, lalu lihat catatan migrasi cadangan di tab Cloud Migration Records of Backup Data. Catatan tersebut mencakup status tugas, waktu mulai tugas, dan waktu selesai tugas. Secara default, catatan minggu lalu ditampilkan. Anda dapat mengubah rentang waktu sesuai kebutuhan.

image

Catatan

Jika Task Status adalah Failed, periksa Task Description atau klik View File Details di sebelah tugas migrasi tujuan untuk mengidentifikasi dan memperbaiki penyebab kegagalan, lalu lakukan migrasi data lagi.

SQL Server 2008 R2 dengan high-performance local disk

Buka halaman migrasi data di panel navigasi sebelah kiri instans ApsaraDB RDS, lalu temukan tugas migrasi tujuan untuk melihat progres migrasi data.

Catatan

Jika Task Status adalah Failed, periksa Task Description atau klik View File Details di sebelah tugas migrasi tujuan untuk mengidentifikasi dan memperbaiki penyebab kegagalan, lalu lakukan migrasi data lagi.

Kesalahan umum

Setiap catatan migrasi cadangan berisi deskripsi tugas. Anda dapat mengidentifikasi penyebab kegagalan tugas dan kesalahan dari deskripsi tugas tersebut. Pesan kesalahan berikut umum terjadi:

  • Database dengan nama yang sama sudah ada

    • Pesan kesalahan 1: Database (xxx) sudah ada di RDS. Cadangkan dan hapus database tersebut, lalu coba lagi.

    • Pesan kesalahan 2: Database 'xxx' sudah ada. Gunakan nama database yang berbeda.

    • Penyebab: Untuk memastikan keamanan data di ApsaraDB RDS untuk SQL Server, ApsaraDB RDS untuk SQL Server tidak mendukung migrasi data ke database yang memiliki nama yang sama dengan database yang sudah ada.

    • Solusi: Jika Anda ingin menimpa data database yang sudah ada, cadangkan data yang ada, hapus database tersebut, lalu lakukan tugas migrasi data lagi.

  • File backup diferensial digunakan

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

    • Penyebab: File cadangan yang Anda berikan adalah file backup diferensial, bukan file cadangan penuh. Migrasi satu kali file cadangan penuh hanya mendukung file cadangan penuh dan tidak mendukung file backup diferensial.

  • File cadangan log digunakan

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

    • Penyebab: File cadangan yang Anda berikan adalah file cadangan log, bukan file cadangan penuh. Migrasi satu kali file cadangan penuh hanya mendukung file cadangan penuh dan tidak mendukung file cadangan log.

  • Verifikasi file cadangan gagal

    • Pesan kesalahan: Gagal memverifikasi xxx.bak—file cadangan rusak atau berasal dari edisi RDS yang lebih baru.

    • Penyebab: File cadangan rusak, atau versi instans SQL Server di lingkungan yang dikelola sendiri lebih baru daripada versi instans ApsaraDB RDS untuk SQL Server. Akibatnya, verifikasi gagal. Misalnya, kesalahan ini dilaporkan saat Anda memulihkan file cadangan SQL Server 2016 ke instans ApsaraDB RDS untuk SQL Server yang menjalankan SQL Server 2012.

    • Solusi: Jika file cadangan rusak, buat cadangan penuh lain di lingkungan yang dikelola sendiri dan buat tugas migrasi lain. Jika versi instans SQL Server di lingkungan yang dikelola sendiri lebih baru daripada versi instans ApsaraDB RDS untuk SQL Server, gunakan instans ApsaraDB RDS untuk SQL Server yang menjalankan versi yang sama atau lebih baru.

      Catatan

      Untuk upgrade instans ApsaraDB RDS untuk SQL Server yang sudah ada ke versi yang lebih baru, lihat Upgrade versi database.

  • DBCC CHECKDB gagal

    • Pesan kesalahan: DBCC checkdb failed.

    • Penyebab: Operasi DBCC CHECKDB gagal. Ini menunjukkan bahwa kesalahan telah terjadi di database di lingkungan yang dikelola sendiri.

    • Solusi: Jalankan perintah berikut untuk memperbaiki kesalahan database di lingkungan yang dikelola sendiri, lalu migrasikan data lagi.

      Penting

      Proses memperbaiki kesalahan dengan menggunakan perintah ini dapat menyebabkan kehilangan data.

      DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
  • Ruang penyimpanan tidak mencukupi 1

    • Pesan kesalahan: Ruang disk tidak mencukupi untuk pemulihan; ruang tersedia (xxx MB) lebih kecil daripada ruang yang dibutuhkan (xxx MB).

    • Penyebab: Ruang penyimpanan tersisa pada instans ApsaraDB RDS tidak memenuhi ruang penyimpanan minimum yang diperlukan untuk memigrasikan file cadangan.

    • Solusi: Upgrade ruang penyimpanan instans.

  • Ruang penyimpanan tidak mencukupi 2

    • Pesan kesalahan: Not Enough Disk Space, space left xxx MB < bak file xxx MB.

    • Penyebab: Ruang penyimpanan tersisa pada instans ApsaraDB RDS kurang dari ukuran file cadangan dan tidak memenuhi persyaratan ruang penyimpanan minimum.

    • Solusi: Upgrade ruang penyimpanan instans.

  • Izin akun login tidak mencukupi

    • Pesan kesalahan: Tidak dapat membuka database "xxx" yang diminta oleh login. Login gagal.

    • Penyebab: Akun yang digunakan untuk login ke instans ApsaraDB RDS tidak memiliki izin akses ke database.

    • Solusi: Berikan izin akses atau manajemen ke database kepada akun di halaman Accounts instans ApsaraDB RDS. Untuk informasi lebih lanjut, lihat Ubah izin akun dan Izin akun di instans ApsaraDB RDS untuk SQL Server.

  • Tidak ada akun istimewa

    • Pesan kesalahan: RDS Anda belum memiliki akun init. Buatlah satu akun dan berikan izin pada database yang dimigrasikan ini (xxx) di Konsol RDS.

    • Penyebab: Tidak ada akun istimewa pada instans ApsaraDB RDS. Tugas migrasi tidak dapat menentukan akun yang akan diberikan izin pada database yang dimigrasikan. Namun, file cadangan dipulihkan ke instans tujuan. Oleh karena itu, status tugas adalah Success.

    • Solusi: Buat akun istimewa.

  • Izin operasi Pengguna RAM tidak mencukupi

    • Pertanyaan 1: Saat saya melakukan Langkah 5 prosedur pembuatan tugas migrasi data, semua parameter telah dikonfigurasi, tetapi tombol OK berwarna abu-abu dan tidak dapat diklik. Apa yang harus saya lakukan?

    • Jawaban 1: Tombol tidak dapat diklik kemungkinan karena Anda login sebagai Pengguna RAM dan akun Anda memiliki izin yang tidak mencukupi. Periksa bagian Prasyarat dalam topik ini untuk memastikan izin yang diperlukan telah diberikan.

    • Pertanyaan 2: Apa yang harus saya lakukan jika muncul pesan permission denied saat saya menggunakan Pengguna RAM untuk memberikan izin pada AliyunRDSImportRole?

    • Jawaban 2: Gunakan akun utama Alibaba Cloud Anda untuk memberikan izin AliyunRAMFullAccess sementara kepada Pengguna RAM.

  • Nama database sama dengan nama database sistem SQL Server

    • Pesan kesalahan: Database (xxx) adalah database sistem MSSQL. Ubah nama database Anda, lalu coba lagi.

    • Penyebab: Nama database yang ditentukan sama dengan nama database sistem SQL Server seperti master, msdb, tempdb, atau model.

    • Solusi: Tentukan nama database lain.

  • Nama database sama dengan nama database sistem instans RDS

    • Pesan kesalahan: Database (xxx) merupakan database sistem RDS. Ubah nama database Anda, lalu coba lagi.

    • Penyebab: Nama database yang ditentukan sama dengan nama database manajemen instans ApsaraDB RDS untuk SQL Server, seperti rdscore.

    • Solusi: Tentukan nama database lain.

  • Jumlah database melebihi batas maksimum

    • Pesan kesalahan: Migrasi database (xxx) gagal karena melebihi batas jumlah database: xxx.

    • Penyebab: Jumlah database melebihi batas maksimum.

    • Solusi: Kurangi jumlah database pada instans dan coba lagi.

  • Masalah URL unduh OSS

    • Pesan kesalahan 1: Gagal mengunduh cadangan (xxx) karena URL OSS telah kedaluwarsa.

    • Pesan kesalahan 2: Gagal mengunduh karena file cadangan (xxx) tidak ditemukan di OSS.

    • Penyebab: URL unduh OSS kedaluwarsa, akun layanan ApsaraDB RDS tidak diberi otorisasi, Pengguna RAM memiliki izin yang tidak mencukupi, atau file tidak ada.

    • Solusi: Periksa apakah file ada di OSS, apakah izin telah diberikan dengan benar, dan apakah otorisasi masih berlaku. Lalu, coba lagi.

  • Striped Backup Issues

    • Pesan kesalahan: Gagal memverifikasi (xxx.bak). Pesan kesalahan: Set media memiliki xxx keluarga media, tetapi hanya satu yang disediakan. Semua anggota harus disediakan. VERIFY DATABASE dihentikan secara tidak normal.

    • Penyebab: Fitur pencadangan terstrip digunakan saat database sumber dicadangkan. Dalam hal ini, cadangan penuh dibagi menjadi beberapa file .bak, tetapi hanya satu file yang disediakan saat data dimigrasikan dari OSS ke ApsaraDB RDS. ApsaraDB RDS tidak mendukung migrasi berdasarkan beberapa file sekaligus.

    • Solusi: Cadangkan database sumber ke satu file .bak dan coba lagi.

Pesan balasan umum

Jenis tugas

Status tugas

Deskripsi tugas

Deskripsi

Migrasi satu kali file cadangan penuh

Success

success

Migrasi berhasil.

Failed

Failed to download backup file since OSS URL was expired.

Periode validitas URL unduh OSS kedaluwarsa, sehingga migrasi gagal.

Your backup is corrupted or newer than RDS, failed to verify.

File cadangan rusak atau dibuat pada versi yang lebih baru daripada versi RDS, sehingga migrasi gagal.

DBCC checkdb failed

Operasi DBCC checkdb gagal, sehingga migrasi gagal.

autotest_2008r2_std_testmigrate_log.trn is a Transaction Log backup, we only accept a FULL Backup.

File cadangan log digunakan, sehingga migrasi gagal.

autotest_2008r2_std_testmigrate_diff.bak is a Database Differential backup, we only accept a FULL Backup.

File backup diferensial digunakan, sehingga migrasi gagal.

Operasi API terkait

API

Deskripsi

CreateMigrateTask

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

CreateOnlineDatabaseTask

Membuka database dari tugas migrasi data cadangan di instans ApsaraDB RDS untuk SQL Server.

DescribeMigrateTasks

Menanyakan daftar tugas migrasi data cadangan di instans ApsaraDB RDS untuk SQL Server.

DescribeOssDownloads

Menanyakan detail file cadangan dari tugas migrasi data cadangan di instans ApsaraDB RDS untuk SQL Server.