Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:Azure SQL Database
Azure SQL Database menyediakan beberapa metode untuk membuat salinan database yang ada di server logis Azure SQL Database yang sama atau server logis 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 logis yang sama atau server logis yang berbeda untuk salinan. 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 logis yang sama, login yang sama dapat digunakan pada kedua database. Keamanan utama yang Anda gunakan untuk menyalin database menjadi pemilik database pada database baru.
Saat Anda menyalin database ke server logis yang berbeda, prinsip keamanan yang memulai operasi salin pada server logis 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 logis 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 Mengonfigurasi dan mengelola keamanan Azure SQL Database untuk pemulihan geografis atau failover. Setelah operasi salin ke server logis yang berbeda berhasil, dan sebelum pengguna lain dipetakan ulang, hanya login 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 database
Anda dapat menyalin database dengan menggunakan PowerShell, Azure CLI, dan Transact-SQL (T-SQL).
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 logis target tempat Anda ingin menyalin database Anda.
Menyalin database dengan Transact-SQL
Masuk ke database master dengan login administrator server atau login yang membuat database yang ingin Anda salin. Agar salinan database berhasil, login yang bukan administrator server harus menjadi anggota peran dbmanager . Untuk informasi selengkapnya tentang masuk dan menyambungkan ke server logis, lihat Mengotorisasi akses database.
Mulai menyalin database sumber dengan pernyataan CREATE DATABASE ... AS COPY OF. Pernyataan T-SQL terus berjalan sampai operasi salinan database selesai.
Bagian ini menyediakan perintah Transact-SQL untuk operasi berikut:
- Salin ke server logis yang sama
- Menyalin ke kumpulan elastis
- Menyalin ke server logis yang berbeda
- Salin ke langganan lain
Catatan
Mengakhiri pernyataan T-SQL tidak mengakhiri operasi penyalinan database. Untuk mengakhiri operasi, hilangkan database target.
Salin ke server logis yang sama
Masuk ke database master dengan login administrator server atau login yang membuat database yang ingin Anda salin. Agar penyalinan database berhasil, login yang bukan administrator server harus menjadi anggota peran dbmanager .
Perintah ini menyalin Database1 ke database baru bernama Database2 di server logis yang sama. Bergantung pada ukuran database Anda, operasi salin mungkin membutuhkan waktu untuk diselesaikan.
-- Execute on the master database to start copying
CREATE DATABASE Database2 AS COPY OF Database1;
Menyalin ke kumpulan elastis
Masuk ke database master dengan login administrator server atau login yang membuat database yang ingin Anda salin. Agar penyalinan database berhasil, login yang bukan administrator server harus menjadi anggota peran dbmanager .
Perintah ini menyalin Database1 ke database baru bernama Database2 dalam kumpulan elastis bernama pool1. Bergantung pada ukuran database Anda, operasi salin mungkin membutuhkan waktu untuk diselesaikan.
Database1 dapat berupa database tunggal atau terkumpul. Menyalin antara kumpulan tingkat yang berbeda didukung, tetapi beberapa salinan lintas tingkat gagal. Misalnya, Anda dapat menyalin db standar tunggal atau elastis ke dalam kumpulan Tujuan Umum, tetapi Anda tidak dapat menyalin db elastis standar ke dalam kumpulan premium.
-- Execute on the master database to start copying
CREATE DATABASE Database2
AS COPY OF Database1
(SERVICE_OBJECTIVE = ELASTIC_POOL( name = pool1 ));
Menyalin ke server logis yang berbeda
Sambungkan ke database master server logis target tempat database baru akan dibuat. Gunakan login yang memiliki nama dan kata sandi yang sama dengan pemilik database database sumber di server logis sumber. Login pada server logis target juga harus menjadi anggota peran dbmanager, atau menjadi login sebagai administrator server.
Perintah ini menyalin Database1 pada server1 ke database baru bernama Database2 di server2. Bergantung pada ukuran database Anda, operasi salin mungkin membutuhkan waktu untuk diselesaikan.
-- Execute on the master database of the target logical server (server2) to start copying from Server1 to Server2
CREATE DATABASE Database2 AS COPY OF server1.Database1;
Penting
Kedua firewall server logis harus dikonfigurasi untuk memungkinkan koneksi masuk dari IP klien yang mengeluarkan perintah CREATE DATABASE ... AS COPY OF T-SQL. Untuk menentukan alamat IP sumber koneksi saat ini, jalankan: SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID;
Catatan
Salinan database menggunakan T-SQL tidak didukung saat menyambungkan ke server logis tujuan melalui titik akhir privat . Jika titik akhir privat dikonfigurasi tetapi akses jaringan publik diizinkan, salinan database didukung saat tersambung ke server logis tujuan dari alamat IP publik menggunakan autentikasi SQL. Setelah operasi penyalinan selesai, akses publik dapat ditolak.
Demikian pula, perintah berikut menyalin Database1 pada server1 ke database baru bernama Database2 dalam kumpulan elastis yang disebut pool2, pada server2.
-- Execute on the master database of the target logical server (server2) to start copying from Server1 to Server2
CREATE DATABASE Database2 AS COPY OF server1.Database1 (SERVICE_OBJECTIVE = ELASTIC_POOL( name = pool2 ) );
Menyalin ke langganan yang berbeda
Anda bisa menggunakan langkah-langkah di bagian Menyalin SQL Database ke server logis lain untuk menyalin database Anda ke server logis dalam langganan lain menggunakan T-SQL. Pastikan Anda menggunakan data masuk yang memiliki nama dan kata sandi yang sama dengan pemilik database dari database sumber. Selain itu, login harus menjadi anggota peran dbmanager atau administrator server, di kedua server logis sumber dan target.
Tip
Saat menyalin database di penyewa Microsoft Entra ID yang sama, otorisasi pada server logis sumber dan tujuan disederhanakan jika Anda memulai perintah salin menggunakan login autentikasi dengan akses yang memadai di kedua server logis. Tingkat akses minimum yang diperlukan adalah keanggotaan dalam peran dbmanager dalam database master di kedua server logikal. Misalnya, Anda dapat menggunakan login ID Microsoft Entra yang merupakan anggota grup yang ditunjuk sebagai administrator server di kedua server logis.
Dalam skrip berikut, nama login yang akan disalin loginname.
Pertama, sambungkan ke database master dari server logis sumber. Buat login dan pengguna di database master dari server logika Azure SQL Database sumber.
--Step# 1
--Create login and user in the master database of the source server.
CREATE LOGIN loginname WITH PASSWORD = 'xxxxxxxxx'
GO
CREATE USER [loginname] FOR LOGIN [loginname] WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE dbmanager ADD MEMBER loginname;
GO
Sambungkan ke database pengguna sumber. Selanjutnya, dalam database pengguna sumber, buat pengguna di database sumber dan tambahkan ke peran database dbowner dalam database.
--Step# 2
--Create the user in the source database and grant dbowner permission to the database.
CREATE USER [loginname] FOR LOGIN [loginname] WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE db_owner ADD MEMBER loginname;
GO
Selanjutnya, temukan pengidentifikasi keamanan (SID) pengguna loginname dari database master server logis sumber.
--Step# 3
--Capture the SID of the user "loginname" from master database
SELECT [sid] FROM sysusers WHERE [name] = 'loginname';
Jalankan skrip berikutnya pada database master dari server logis baru atau server logis tujuan. Pertama, buat login dan pengguna di database master pada server logis yang menjadi tujuan, dan tambahkan ke dalam peran server dbmanager. Berikan <strong password>, dan ganti <SID of loginname login on source server> dengan SID dari server logis sumber.
--Step# 4
--Connect to Destination server.
--Create login and user in the master database, same as of the source server.
CREATE LOGIN loginname WITH PASSWORD = '<strong password>', SID = <SID of loginname login on source server>;
GO
CREATE USER [loginname] FOR LOGIN [loginname] WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE dbmanager ADD MEMBER loginname;
GO
Di database master server logis tujuan, buat database baru. Ganti new_database_name dengan nama yang diinginkan. Ganti source_server_name dan source_database_name dengan nama sumber.
--Step# 5
--Execute the copy of database script from the destination logical server using the credentials created
CREATE DATABASE new_database_name
AS COPY OF source_server_name.source_database_name;
Tip
Menyalin database dari langganan di penyewa Azure yang berbeda hanya didukung saat menggunakan T-SQL dan login autentikasi SQL untuk masuk ke server logis target. Membuat salinan database di server logis di penyewa Azure yang berbeda tidak didukung dengan autentikasi Microsoft Entra untuk Azure SQL.
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_desckolomsys.databasestampilan untuk database baru diatur keSUSPECT. Jalankan pernyataan DROP pada database baru, dan coba lagi nanti. - Jika penyalinan berhasil,
state_desckolomsys.databasestampilan 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 logis 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 logis sumber dengan izin berikut:
Microsoft.Sql/servers/databases/read-
Microsoft.Sql/servers/databases/writedan
- Peran kustom pada server logis target dengan izin berikut:
Microsoft.Sql/servers/readMicrosoft.Sql/servers/databases/readMicrosoft.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/readMicrosoft.Resources/deployments/readMicrosoft.Resources/deployments/writeMicrosoft.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/readMicrosoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read
Mengatasi data masuk
Setelah database baru online di server logis target, gunakan pernyataan ALTER USER untuk memetakan ulang pengguna dari database baru untuk masuk di server logis target. Untuk mengatasi pengguna tanpa sumber, lihat Memecahkan Masalah Pengguna Tanpa Sumber. Lihat juga Mengonfigurasi dan mengelola keamanan Azure SQL Database untuk pemulihan geografis atau failover.
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 pengguna dan login saat Anda menyalin database ke server logis yang berbeda, lihat Mengonfigurasi dan mengelola keamanan Azure SQL Database untuk pemulihan geografis atau failover.
Kesalahan salinan database
Kesalahan berikut dapat ditemui saat menyalin database di Azure SQL Database. Untuk informasi selengkapnya, lihat Menyalin salinan database yang konsisten secara transaksional di 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. |