Menyalin salinan database yang konsisten secara transaksional di Azure SQL Database
Berlaku untuk: Azure SQL Database
Azure SQL Database menyediakan beberapa metode untuk membuat salinan database yang ada di server yang sama atau server yang berbeda. Anda dapat menyalin database dengan menggunakan portal Azure, PowerShell, Azure CLI, atau Transact-SQL.
Catatan
ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).
Gambaran Umum
Salinan database adalah rekam jepret database sumber yang konsisten secara transaksional pada titik waktu ketika permintaan penyalinan dimulai. Anda dapat memilih server yang sama atau server lain untuk salinan tersebut. Anda juga dapat memilih untuk menyimpan redundansi cadangan dan ukuran komputasi database sumber, atau menggunakan redundansi penyimpanan cadangan yang berbeda dan/atau ukuran komputasi dalam tingkat layanan yang sama. Dimungkinkan juga untuk menyalin database di tingkat layanan Standar ke tingkat Standar atau Tujuan Umum dan database di tingkat layanan Premium ke tingkat Premium atau Bisnis Kritis.
Setelah salinan selesai, database baru adalah database yang berfungsi penuh dan independen ke database sumber. Data masuk, pengguna, dan izin dalam database yang disalin dikelola secara independen dari database sumber. Salinan dibuat menggunakan teknologi replikasi geografis. Setelah penyemaian replika selesai, tautan replikasi geografis secara otomatis dihentikan. Semua persyaratan untuk menggunakan replikasi geografis berlaku untuk operasi salinan database. Lihat ringkasan replikasi geografis aktif untuk detailnya.
Catatan
portal Azure, PowerShell, dan Azure CLI tidak mendukung salinan database ke langganan lain.
Salinan database untuk database Hyperscale
Untuk database di tingkat layanan Hyperscale, database target menentukan apakah salinannya adalah salinan cepat, atau salinan ukuran data:
Salinan cepat: Ketika salinan dilakukan di wilayah yang sama dengan sumbernya, salinan dibuat dari rekam jepret blob, salinan ini adalah operasi cepat terlepas dari ukuran database.
Salinan ukuran data: Ketika database target berada di wilayah yang berbeda dari sumber atau jika redundansi penyimpanan cadangan database (Lokal, Zonal, Geo) dari target berbeda dari database sumber, operasi salin adalah operasi ukuran data. Waktu salin tidak sebanding secara langsung dengan ukuran, karena blob server halaman disalin secara paralel.
Data masuk dalam salinan database
Saat Anda menyalin database ke server yang sama, data masuk yang sama dapat digunakan di kedua database. Keamanan utama yang Anda gunakan untuk menyalin database menjadi pemilik database pada database baru.
Saat Anda menyalin database ke server yang berbeda, keamanan utama yang memulai operasi salin pada server target menjadi pemilik database baru.
Terlepas dari server target, semua pengguna database, izin, dan pengidentifikasi keamanan (SID) disalin ke salinan database. Menggunakan pengguna database mandiri untuk akses data memastikan bahwa database yang disalin memiliki informasi masuk pengguna yang sama, sehingga setelah penyalinan selesai Anda dapat segera mengaksesnya dengan informasi masuk yang sama.
Jika Anda menggunakan data masuk tingkat server untuk akses data dan menyalin database ke server lain, akses berbasis data masuk mungkin tidak berfungsi. Ini dapat terjadi karena login tidak ada di server target, atau karena kata sandi dan pengidentifikasi keamanan (SID) tersebut berbeda. Untuk informasi selengkapnya tentang mengelola login saat Anda menyalin database ke server lain, lihat Cara mengelola keamanan Azure SQL Database setelah pemulihan bencana. Setelah operasi salin ke server yang berbeda berhasil, dan sebelum pengguna lain dipetakan ulang, hanya data masuk yang terkait dengan pemilik database, atau administrator server yang dapat masuk ke database yang disalin. Untuk mengatasi data masuk dan membangun akses data setelah operasi penyalinan selesai, lihat Mengatasi data masuk.
Menyalin menggunakan portal Microsoft Azure
Untuk menyalin database dengan menggunakan portal Azure, buka halaman untuk database Anda, lalu pilih Salin untuk membuka halaman Buat Database SQL - Salin database. Isi nilai untuk server target tempat Anda ingin menyalin database Anda.
Menyalin database
Anda dapat menyalin database dengan menggunakan PowerShell, Azure CLI, dan Transact-SQL (T-SQL).
Untuk PowerShell, gunakan cmdlet New-AzSqlDatabaseCopy.
Penting
Modul PowerShell Azure Resource Manager (RM) masih didukung oleh Azure SQL Database, tetapi semua pengembangan di masa mendatang adalah untuk modul Az.Sql. Modul AzureRM akan terus menerima perbaikan bug hingga setidaknya bulan Desember 2020. Argumen untuk perintah dalam modul Az dan dalam modul AzureRm secara substansial identik. Untuk informasi selengkapnya tentang kompatibilitas keduanya, lihat Memperkenalkan modul Azure PowerShell Az baru.
New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
-CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"
Salinan database adalah operasi asinkron tetapi database target dibuat segera setelah permintaan diterima. Jika Anda perlu membatalkan operasi salin saat masih berlangsung, hilangkan database target menggunakan cmdlet Remove-AzSqlDatabase .
Untuk contoh lengkap skrip PowerShell, lihat Menyalin database ke server baru.
Memantau kemajuan operasi penyalinan
Pantau proses penyalinan dengan mengkueri tampilan sys.databases, sys.dm_database_copies, dan sys.dm_operation_status. Saat penyalinan sedang berlangsung, state_desc
kolom sys.databases
tampilan untuk database baru diatur ke COPYING
.
- Jika penyalinan gagal,
state_desc
kolomsys.databases
tampilan untuk database baru diatur keSUSPECT
. Jalankan pernyataan DROP pada database baru, dan coba lagi nanti. - Jika penyalinan berhasil,
state_desc
kolomsys.databases
tampilan untuk database baru diatur keONLINE
. Penyalinan selesai, dan database baru adalah database reguler yang dapat diubah secara independen dari database sumber.
Catatan
Jika Anda memutuskan untuk membatalkan penyalinan saat sedang berlangsung, jalankan pernyataan DROP DATABASE pada database baru.
Penting
Jika Anda perlu membuat salinan dengan tujuan layanan yang jauh lebih kecil daripada sumbernya, database target mungkin tidak memiliki sumber daya yang memadai untuk menyelesaikan proses penyemaian dan dapat menyebabkan operasi penyalinan gagal. Dalam skenario ini gunakan permintaan pemulihan geografis untuk membuat salinan di server yang berbeda dan/atau wilayah yang berbeda. Untuk informasi selengkapnya, lihat Memulihkan Azure SQL Database menggunakan cadangan database.
Izin
Untuk membuat salinan database, Anda harus berada dalam peran berikut:
- Pemilik Langganan atau
- Peran Kontributor SQL Server atau
- Peran kustom di server sumber dengan izin berikut:
- Microsoft.Sql/servers/databases/read
- Microsoft.Sql/servers/databases/write dan
- Peran kustom pada server target dengan izin berikut:
- Microsoft.Sql/servers/read
- Microsoft.Sql/servers/databases/read
- Microsoft.Sql/servers/databases/write
Untuk membatalkan salinan database, Anda harus berada dalam peran berikut:
- Pemilik Langganan atau
- Peran Kontributor SQL Server atau
- Peran kustom pada database target dengan izin berikut:
- Microsoft.Sql/servers/databases/delete
Untuk mengelola salinan database menggunakan portal Azure, Anda juga memerlukan izin berikut:
- Microsoft.Resources/subscriptions/resources/read
- Microsoft.Resources/deployments/read
- Microsoft.Resources/deployments/write
- Microsoft.Resources/deployments/operationstatuses/read
Jika Anda ingin melihat operasi di bawah penyebaran di grup sumber daya di portal, operasi di beberapa penyedia sumber daya termasuk operasi SQL, Anda memerlukan izin tambahan ini:
- Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
- Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read
Mengatasi data masuk
Setelah database baru online di server target, gunakan pernyataan ALTER USER untuk memetakan ulang pengguna dari database baru untuk masuk di server target. Untuk mengatasi pengguna tanpa sumber, lihat Memecahkan Masalah Pengguna Tanpa Sumber. Lihat juga Cara mengelola keamanan Azure SQL Database setelah pemulihan bencana.
Semua pengguna dalam database baru mempertahankan izin yang dimiliki di database sumber. Pengguna yang memulai salinan database menjadi pemilik database dari database baru. Setelah penyalinan berhasil dan sebelum pengguna lain dipetakan ulang, hanya pemilik database yang dapat masuk ke database baru.
Untuk mempelajari tentang mengelola data masuk saat Anda menyalin database ke server lain, lihat Cara mengelola keamanan Azure SQL Database setelah pemulihan bencana.
Kesalahan salinan database
Kesalahan berikut dapat ditemui saat menyalin database di Azure SQL Database. Untuk informasi selengkapnya, lihat Menyalin Azure SQL Database.
Kode kesalahan | Tingkat keparahan | Deskripsi |
---|---|---|
40635 | 16 | Klien dengan alamat IP '%.*ls' dinonaktifkan untuk sementara. |
40637 | 16 | Membuat salinan database saat ini dinonaktifkan. |
40561 | 16 | Salinan database gagal. Database sumber atau target tidak ada. |
40562 | 16 | Salinan database gagal. Database sumber telah dihilangkan. |
40563 | 16 | Salinan database gagal. Database target telah dihilangkan. |
40564 | 16 | Salinan database gagal karena kesalahan internal. Harap hilangkan database target, lalu coba lagi. |
40565 | 16 | Salinan database gagal. Tidak boleh lebih dari 1 salinan database bersamaan dari sumber yang sama. Harap hilangkan database target, lalu coba lagi nanti. |
40566 | 16 | Salinan database gagal karena kesalahan internal. Harap hilangkan database target, lalu coba lagi. |
40567 | 16 | Salinan database gagal karena kesalahan internal. Harap hilangkan database target, lalu coba lagi. |
40568 | 16 | Salinan database gagal. Database sumber menjadi tidak tersedia. Harap hilangkan database target, lalu coba lagi. |
40569 | 16 | Salinan database gagal. Database target menjadi tidak tersedia. Harap hilangkan database target, lalu coba lagi. |
40570 | 16 | Salinan database gagal karena kesalahan internal. Harap hilangkan database target, lalu coba lagi nanti. |
40571 | 16 | Salinan database gagal karena kesalahan internal. Harap hilangkan database target, lalu coba lagi nanti. |