Migrasikan database SQL Server yang dikelola sendiri ke ApsaraDB RDS for SQL Server dengan mengunggah file cadangan penuh (.bak) ke Object Storage Service (OSS) dan mengimpornya ke instans RDS Anda. Solusi ini cocok untuk migrasi satu kali, pemulihan bencana, dan pencadangan data berbasis cloud.
Cara kerja
-
Backup database SQL Server on-premises Anda ke file
.bak. -
Unggah file backup ke bucket OSS di wilayah yang sama dengan instans RDS Anda.
-
Picu tugas impor dari konsol RDS — sistem akan mengambil file dari OSS dan memulihkannya.
Solusi ini hanya mendukung migrasi tingkat database. Untuk migrasi beberapa atau semua database sekaligus, gunakan solusi migrasi tingkat instans.
Batasan
Tinjau batasan berikut sebelum memulai:
-
Lingkup migrasi: Hanya tingkat database. Satu database per tugas.
-
Kompatibilitas versi: Versi SQL Server sumber tidak boleh lebih baru daripada versi instans RDS tujuan. Misalnya, Anda tidak dapat memulihkan backup SQL Server 2016 ke instans SQL Server 2012.
-
Jenis backup: Hanya file backup penuh (
.bak). Backup diferensial dan backup log tidak diterima oleh proses impor. -
Nama file: Tidak boleh mengandung karakter khusus seperti
!@#$%^&*()_+-=. -
Format file: Jika sumbernya adalah file backup yang diunduh dari ApsaraDB RDS for SQL Server (format
.zip), dekompresi terlebih dahulu menjadi.baksebelum diunggah. -
Ekstensi yang didukung:
.bak(backup penuh),.diff(backup diferensial),.trnatau.log(backup log). File dengan ekstensi lain tidak dikenali. -
AliyunRDSImportRole: Setelah memberikan akses OSS ke akun layanan RDS, sebuah role bernama
AliyunRDSImportRoledibuat di RAM. Jangan ubah atau hapus role ini — tindakan tersebut akan menyebabkan tugas migrasi gagal. Jika Anda tidak sengaja menghapusnya, berikan kembali izin melalui wizard migrasi. -
Akun pasca-migrasi: Setelah migrasi, akun database asli dari instans sumber menjadi tidak tersedia. Buat akun baru di konsol ApsaraDB RDS.
-
Retensi file OSS: Jangan hapus file backup dari OSS hingga tugas migrasi selesai.
Penagihan
| Skenario | Biaya |
|---|---|
| Mengunggah file backup ke OSS | Gratis |
| Menyimpan file backup di OSS | Dikenakan biaya penyimpanan OSS. Lihat harga OSSharga OSS. |
| Mengimpor melalui jaringan internal (wilayah yang sama) | Gratis |
| Mengimpor melalui internet | Dikenakan biaya lalu lintas keluar OSS. Lihat harga OSSharga OSS. |
Prasyarat
Sebelum memulai, pastikan bahwa:
-
Instans RDS memiliki ruang penyimpanan yang cukup untuk menampung file data. Jika tidak, tingkatkan kapasitas penyimpanan instans.
-
Untuk SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan disk cloud: Instans RDS tidak berisi database dengan nama yang sama seperti database yang akan dimigrasikan.
-
Untuk SQL Server 2008 R2 dengan disk lokal berkinerja-tinggi: Database dengan nama yang sama seperti database yang akan dimigrasikan sudah ada di instans RDS.
-
Jika menggunakan Pengguna Resource Access Management (RAM):
-
Pengguna RAM memiliki izin AliyunOSSFullAccess dan AliyunRDSFullAccess. Lihat Kelola izin OSS menggunakan RAM dan Kelola izin ApsaraDB RDS menggunakan RAM.
-
Akun Alibaba Cloud Anda telah memberikan akses akun layanan ApsaraDB RDS ke sumber daya OSS Anda. Lihat langkah otorisasi di bawah.
-
Akun Alibaba Cloud Anda telah membuat kebijakan akses kustom dan melampirkannya ke pengguna RAM. Kebijakan tersebut harus mencakup: ``
json { "Version": "1", "Statement": [ { "Action": [ "ram:GetRole" ], "Resource": "acs:ram:*:*:role/AliyunRDSImportRole", "Effect": "Allow" } ] }``
-
Persiapkan database sumber
Di lingkungan SQL Server on-premises Anda, jalankan DBCC CHECKDB untuk memverifikasi bahwa database tidak memiliki error sebelum melakukan backup:
DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
Database yang bersih akan menghasilkan:
CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Jangan lanjutkan jika pemeriksaan melaporkan error. Lihat DBCC CHECKDB failed untuk cara memperbaiki masalah tersebut.
Langkah 1: Backup database lokal
Pilih prosedur yang sesuai dengan tipe instans RDS Anda.
SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan disk cloud
Hentikan semua operasi tulis ke database sebelum memulai backup. Data yang ditulis selama proses backup tidak termasuk dalam file backup.
-
Unduh skrip backup dan buka di SQL Server Management Studio (SSMS).
-
Di skrip tersebut, atur parameter pada pernyataan
SELECTdi bawah bagianYOU HAVE TO INIT PUBLIC VARIABLES HERE:Parameter Deskripsi @backup_databases_listDatabase yang akan di-backup. Pisahkan beberapa nama database dengan titik koma ( ;) atau koma (,).@backup_typeJenis backup: FULL,DIFF, atauLOG.@backup_folderDirektori lokal untuk file backup. Dibuat secara otomatis jika belum ada. @is_run1untuk menjalankan backup;0untuk dry run (hanya pemeriksaan). -
Jalankan skrip tersebut.
SQL Server 2008 R2 dengan disk lokal berkinerja-tinggi
-
Buka SQL Server Management Studio (SSMS) dan login ke database yang ingin dimigrasikan.
-
Periksa model recovery saat ini:
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 kolom
modelbukanFULL, atur keFULL:PentingMengatur model recovery ke
FULLmeningkatkan volume data log transaksi. Pastikan Anda memiliki ruang disk yang cukup sebelum melanjutkan.ALTER DATABASE [dbname] SET RECOVERY FULL; GO ALTER DATABASE [dbname] SET AUTO_CLOSE OFF; GO -
Backup database. Contoh berikut melakukan backup
dbtestked:\backup\backup.bak:USE master; GO BACKUP DATABASE [dbtest] TO DISK = 'd:\backup\backup.bak' WITH COMPRESSION, INIT; GO -
Verifikasi file backup:
USE master; GO RESTORE FILELISTONLY FROM DISK = N'D:\backup\backup.bak';Jika perintah mengembalikan set hasil, file tersebut valid. Jika mengembalikan error, ulangi proses backup.
-
(Opsional) Pulihkan model recovery asli jika Anda mengubahnya di langkah 3:
ALTER DATABASE [dbname] SET RECOVERY SIMPLE; GOLewati langkah ini jika model recovery sudah
FULLsejak awal.
Langkah 2: Unggah file backup ke OSS
Persiapkan bucket OSS
Anda memerlukan bucket OSS di wilayah yang sama dengan instans RDS Anda. Konfigurasi wilayah yang sama menggunakan jaringan internal, yang lebih cepat dan tidak dikenai biaya lalu lintas keluar.
Jika Anda sudah memiliki bucket, pastikan bucket tersebut memenuhi persyaratan berikut:
-
Kelas penyimpanan: Standard. Infrequent Access, Archive, Cold Archive, dan Deep Cold Archive tidak didukung.
-
Enkripsi sisi server: dimatikan.
Jika Anda perlu membuat bucket, pastikan Anda telah mengaktifkan OSS, lalu:
-
Login ke konsol OSS, klik Buckets, lalu klik Create Bucket.
-
Atur parameter berikut. Biarkan semua parameter lain pada nilai default-nya.
PentingJangan aktifkan enkripsi sisi server saat membuat bucket. Hapus bucket setelah migrasi untuk mencegah eksposur data dan mengurangi biaya.
Parameter Deskripsi Contoh Bucket name Unik secara global, tidak dapat diubah setelah dibuat. Hanya huruf kecil, angka, dan tanda hubung. Harus dimulai dan diakhiri dengan huruf kecil atau angka. Panjang 3–63 karakter. migratetestRegion Harus sesuai dengan wilayah instans RDS Anda. China (Hangzhou) Storage class Pilih Standard. Standard
Unggah file backup
Pilih metode unggah berdasarkan ukuran file Anda.
Dapatkan URL file backup (hanya untuk SQL Server 2008 R2 dengan disk lokal berkinerja-tinggi)
Setelah mengunggah file, buat URL sementara untuk digunakan dalam langkah impor:
-
Login ke konsol OSS dan klik Buckets.
-
Klik nama bucket tujuan.
-
Di panel navigasi kiri, pilih File Management > Files.
-
Di kolom Actions untuk file backup, klik Details. Atur Expiration (Seconds) ke
28800(8 jam).PentingTugas migrasi menggunakan URL ini untuk mengunduh file. Jika URL kedaluwarsa sebelum tugas selesai, migrasi akan gagal.
-
Klik Copy File URL.

-
Untuk migrasi melalui jaringan internal, ubah titik akhir publik di URL menjadi titik akhir internal. Misalnya, ubah
oss-cn-shanghai.aliyuncs.commenjadioss-cn-shanghai-internal.aliyuncs.com.Format titik akhir internal bervariasi berdasarkan wilayah. Lihat Endpoints and data centersEndpoints and data centers.
Langkah 3: Impor data backup OSS
Pilih prosedur yang sesuai dengan tipe instans RDS Anda.
SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan disk cloud
-
Buka halaman Instances. Di bilah navigasi atas, pilih wilayah instans RDS Anda, lalu klik ID instans.
-
Di panel navigasi kiri, klik Backup and Restoration.
-
Klik Migrate OSS Backup Data to RDS.
-
Di Import Guide, klik Next dua kali hingga mencapai langkah impor data.
Pada penggunaan pertama, Anda harus mengotorisasi ApsaraDB RDS untuk mengakses OSS. Klik Authorization URL dan selesaikan otorisasi. Tanpa ini, daftar OSS Bucket akan kosong. Jika file yang Anda unggah tidak terlihat, periksa apakah ekstensi file memenuhi persyaratan di Batasan dan apakah bucket serta instans RDS berada di wilayah yang sama.
-
Konfigurasikan pengaturan impor:
Parameter Deskripsi Database name Nama untuk database yang dipulihkan di instans RDS. Harus mengikuti konvensi penamaan SQL Server dan tidak boleh bertabrakan dengan database yang sudah ada atau file database yang tidak terpasang. Jika set cadangan berisi file database dengan nama yang sama seperti database tujuan, Anda dapat memulihkan menggunakan file tersebut — nama file database harus sesuai dengan nama database tujuan. OSS bucket Pilih bucket yang berisi file backup. OSS file Klik ikon pencarian untuk menemukan file berdasarkan awalan. Daftar menampilkan nama file, ukuran, dan waktu pembaruan. Cloud migration method Immediate Access (Full Backup): Migrasi penuh dari satu file backup penuh. Mengatur BackupMode=FULLdanIsOnlineDB=True. Access Pending (Incremental Backup): Migrasi menggunakan backup penuh ditambah backup log atau diferensial. MengaturBackupMode=UPDFdanIsOnlineDB=False.Consistency check mode Asynchronous DBCC: Membuka database segera dan menjalankan DBCC CHECKDBdi latar belakang. Mengurangi downtime. MengaturCheckDBMode=AsyncExecuteDBCheck. Gunakan ini ketika meminimalkan downtime menjadi prioritas. Synchronous DBCC: MenjalankanDBCC CHECKDBsebelum membuka database. Memakan waktu lebih lama tetapi memastikan konsistensi data sejak awal. MengaturCheckDBMode=SyncExecuteDBCheck. -
Klik OK.
Setelah tugas selesai, instans RDS akan melakukan backup pada waktu terjadwal berikutnya sesuai kebijakan backup otomatis. Set cadangan yang dihasilkan mencakup data yang dimigrasikan dan tersedia di halaman Backup and Restoration. Untuk membuat backup segera, picu backup manual.
SQL Server 2008 R2 dengan disk lokal berkinerja-tinggi
-
Buka halaman Instances, pilih wilayah, lalu klik ID instans.
-
Di panel navigasi kiri, klik Databases.
-
Di kolom Actions untuk database tujuan, klik Migrate Backup Files from OSS.

-
Di Import Guide, tinjau informasi dan klik Next.
-
Tinjau petunjuk unggah OSS dan klik Next.
-
Di bidang OSS URL of backup file, masukkan URL yang Anda salin di langkah 2, lalu klik OK.
Tipe instans ini hanya mendukung impor satu kali dari file backup penuh.

Langkah 4: Pantau tugas migrasi
Pilih tampilan yang sesuai dengan tipe instans RDS Anda.
SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan disk cloud
Buka Backup and Restoration dan klik tab Cloud Migration Records of Backup Data. Tab ini menampilkan status tugas, waktu mulai, dan waktu selesai. Secara default, catatan dari minggu lalu ditampilkan — sesuaikan rentang waktu sesuai kebutuhan.
Jika Task Status adalah Failed, periksa Task Description atau klik View File Details untuk mengidentifikasi penyebabnya, lalu jalankan ulang tugas setelah menyelesaikan masalah.
SQL Server 2008 R2 dengan disk lokal berkinerja-tinggi
Di halaman Data Migration To Cloud, temukan tugas migrasi untuk melihat progresnya.
Jika Task Status adalah Failed, periksa Task Description atau klik View File Details untuk mengidentifikasi penyebabnya, lalu jalankan ulang tugas setelah menyelesaikan masalah.
Pesan balasan umum
| Jenis tugas | Status | Deskripsi tugas | Makna |
|---|---|---|---|
| Impor backup penuh satu kali | Success | success |
Migrasi berhasil diselesaikan. |
| Failed | Failed to download backup file since OSS URL was expired. |
URL unduh OSS kedaluwarsa sebelum tugas selesai. Hasilkan ulang URL dan coba lagi. | |
Your backup is corrupted or newer than RDS, failed to verify. |
File backup rusak, atau versi SQL Server sumber lebih baru daripada versi instans RDS. | ||
DBCC checkdb failed |
Database sumber memiliki error konsistensi. | ||
autotest_2008r2_std_testmigrate_log.trn is a Transaction Log backup, we only accept a FULL Backup. |
File tersebut adalah backup log. Berikan file backup penuh sebagai gantinya. | ||
autotest_2008r2_std_testmigrate_diff.bak is a Database Differential backup, we only accept a FULL Backup. |
File tersebut adalah backup diferensial. Berikan file backup penuh sebagai gantinya. |
Pemecahan Masalah
Database (xxx) sudah ada di RDS. Harap cadangkan dan hapus database tersebut, lalu coba lagi. atau Database 'xxx' sudah ada. Pilih nama database yang berbeda.
ApsaraDB RDS for SQL Server tidak mengizinkan migrasi ke database yang sudah ada. Backup dan hapus database yang ada, lalu coba lagi.
Backup set (xxx.bak) is a Database Differential backup, we only accept a FULL Backup.
File yang diberikan adalah backup diferensial. Metode migrasi ini hanya menerima file backup penuh.
Backup set (xxx.trn) is a Transaction Log backup, we only accept a FULL Backup.
File yang diberikan adalah backup log. Metode migrasi ini hanya menerima file backup penuh.
Failed to verify xxx.bak, backup file was corrupted or newer edition than RDS. {#backup-verification-failed}
Dua kemungkinan penyebab:
File rusak: Buat backup penuh baru dari database sumber dan mulai tugas migrasi baru.
Ketidakcocokan versi: Versi SQL Server sumber lebih baru daripada versi instans RDS tujuan. Gunakan instans RDS yang menjalankan versi yang sama atau lebih baru. Untuk meningkatkan instans RDS yang ada, lihat Upgrade the database engine version.
DBCC checkdb failed
Database sumber memiliki error. Perbaiki dengan perintah berikut, lalu coba lagi migrasi:
DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGSPerintah ini dapat menyebabkan kehilangan data.
Ruang Disk Tidak Cukup untuk pemulihan, ruang tersisa (xxx MB) < yang diperlukan (xxx MB). atau Ruang Disk Tidak Cukup, ruang tersisa xxx MB < file bak xxx MB.
Instans RDS tidak memiliki ruang penyimpanan yang cukup. Tingkatkan kapasitas penyimpanan instans dan coba lagi.
Cannot open database "xxx" requested by the login. The login failed.
Akun tidak memiliki izin untuk database tersebut. Di halaman Account Management, berikan izin yang diperlukan. Lihat Grant permissions to an account dan Permissions supported by different account types.
Your RDS doesn't have any init account yet, please create one and grant permissions on RDS console to this migrated database (xxx).
Instans RDS tidak memiliki akun istimewa. Backup berhasil dipulihkan, tetapi tidak ada izin yang dapat diberikan. Buat akun istimewa.
Tombol OK tidak aktif saat mengonfigurasi tugas migrasi
Pengguna RAM tidak memiliki izin yang cukup. Tinjau persyaratan pengguna RAM di Prasyarat.
permission denied saat memberikan izin untuk AliyunRDSImportRole sebagai pengguna RAM
Gunakan Akun Alibaba Cloud Anda untuk untuk sementara menambahkan AliyunRAMFullAccess ke Pengguna RAM.
Referensi API
| API | Deskripsi |
|---|---|
| CreateMigrateTask | Membuat tugas migrasi yang memulihkan file backup dari OSS ke instans ApsaraDB RDS for SQL Server. |
| CreateOnlineDatabaseTask | Membuka database dari tugas migrasi. |
| DescribeMigrateTasks | Menampilkan daftar tugas migrasi untuk instans ApsaraDB RDS for SQL Server. |
| DescribeOssDownloads | Meminta detail file dari tugas migrasi. |




