Migrasikan database SQL Server yang dikelola sendiri ke ApsaraDB RDS for SQL Server dengan mengunggah file cadangan penuh (.bak) ke Object Storage Service (OSS), lalu mengimpornya ke instans RDS Anda melalui konsol. Pendekatan ini berlaku 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 menarik 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
Sebelum memulai, tinjau batasan berikut untuk memastikan solusi ini sesuai dengan kasus penggunaan Anda:
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 ke format.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. |
| Impor melalui jaringan internal (wilayah yang sama) | Gratis |
| Impor melalui internet | Dikenakan biaya lalu lintas outbound 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 yang lebih baru, atau SQL Server 2008 R2 dengan disk cloud: Instans RDS tidak berisi database dengan nama yang sama dengan database yang akan dimigrasikan.
Untuk SQL Server 2008 R2 dengan disk lokal berkinerja-tinggi: Database dengan nama yang sama dengan database yang akan dimigrasikan sudah ada pada 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 resource 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_ERRORMSGSDatabase 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 yang 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).
Dalam skrip, 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 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'); GOJika 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; GOBackup database. Contoh berikut melakukan backup
dbtestked:\backup\backup.bak:USE master; GO BACKUP DATABASE [dbtest] TO DISK = 'd:\backup\backup.bak' WITH COMPRESSION, INIT; GOVerifikasi 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. Ketika bucket dan instans berada di wilayah yang sama, migrasi berjalan melalui jaringan internal — bebas biaya lalu lintas outbound dan lebih cepat daripada melalui internet.
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 tersebut 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 endpoint publik dalam URL menjadi endpoint internal. Misalnya, ubah
oss-cn-shanghai.aliyuncs.commenjadioss-cn-shanghai-internal.aliyuncs.com.Format endpoint internal bervariasi berdasarkan wilayah. Lihat Endpoints dan pusat dataEndpoints dan pusat data.
Langkah 3: Impor data backup OSS
Pilih prosedur yang sesuai dengan tipe instans RDS Anda.
SQL Server 2012 atau yang 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 database yang dipulihkan pada instans RDS. Nama harus mengikuti konvensi penamaan SQL Server dan tidak boleh bertentangan dengan database yang ada atau file database yang tidak terpasang pada instans. Jika set cadangan berisi file database dengan nama yang sama dengan database tujuan, Anda dapat memulihkan database 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 lalu klik Next.
Tinjau petunjuk unggah OSS lalu 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 yang 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. |
| Impor backup penuh satu kali | Failed | Failed to download backup file since OSS URL was expired. | URL unduh OSS kedaluwarsa sebelum tugas selesai. Hasilkan ulang URL dan coba lagi. |
| Impor backup penuh satu kali | Failed | 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. |
| Impor backup penuh satu kali | Failed | DBCC checkdb failed | Database sumber memiliki error konsistensi. |
| Impor backup penuh satu kali | Failed | 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. |
| Impor backup penuh satu kali | Failed | 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. Silakan cadangkan dan hapus terlebih dahulu, lalu coba lagi. atau Database 'xxx' sudah ada. Pilih nama database lain.
ApsaraDB RDS for SQL Server tidak mengizinkan migrasi ke database yang sudah ada. Backup database yang ada, hapus, lalu jalankan ulang tugas migrasi.
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 versi engine database.
DBCC checkdb failed
Database sumber memiliki error. Perbaiki dengan perintah berikut, lalu migrasikan lagi:
DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGSPerintah ini dapat menyebabkan kehilangan data.
Not Enough Disk Space for restoring, space left (xxx MB) < needed (xxx MB). atau Not Enough Disk Space, space left xxx MB < bak file xxx MB.
Instans RDS tidak memiliki ruang penyimpanan yang cukup. Tingkatkan kapasitas penyimpanan instans.
Cannot open database "xxx" requested by the login. The login failed.
Akun yang digunakan untuk menghubungkan ke instans RDS tidak memiliki izin untuk database tersebut. Di halaman Account Management, berikan izin yang diperlukan. Lihat Berikan izin ke akun dan Izin yang didukung oleh berbagai tipe akun.
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 menambahkan kebijakan AliyunRAMFullAccess secara sementara 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. |





