Mengekspor ke file BACPAC - Azure SQL Database dan Azure SQL Managed Instance

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Ketika Anda perlu mengekspor database untuk pengarsipan atau untuk pemindahan ke platform lain, Anda dapat mengekspor skema database dan data ke file BACPAC. File BACPAC adalah file ZIP dengan ekstensi BACPAC yang berisi metadata dan data dari database. File BACPAC dapat disimpan di penyimpanan Azure Blob atau di penyimpanan lokal di lokasi lokal dan kemudian diimpor kembali ke Azure SQL Database, Azure SQL Managed Instance, atau SQL Server Instance.

Pertimbangan

  • Agar ekspor konsisten secara transaksional, Anda harus memastikan bahwa tidak ada aktivitas tulis yang terjadi selama ekspor, atau bahwa Anda mengekspor dari salinan database Anda yang konsisten secara transaksional.

  • Jika Anda mengekspor ke penyimpanan blob, ukuran maksimum file BACPAC adalah 200 GB. Untuk mengarsipkan file BACPAC yang lebih besar, ekspor ke penyimpanan lokal dengan SqlPackage.

  • Nama file Azure Storage tidak dapat diakhir dengan . dan tidak boleh berisi karakter khusus seperti karakter spasi atau <, >, *, %, &, :, \, , /. ? Panjang nama file harus kurang dari 128 karakter.

  • Jika operasi ekspor melebihi 20 jam, mungkin operasi tersebut dibatalkan. Untuk meningkatkan performa selama ekspor, Anda dapat:

    • Meningkatkan ukuran komputasi Anda untuk sementara waktu.
    • Menghentikan semua aktivitas baca dan tulis selama ekspor.
    • Gunakan indeks berkluster dengan nilai bukan nol pada semua tabel besar. Tanpa indeks berkluster, mungkin ekspor akan gagal jika memakan waktu lebih dari 6-12 jam. Ini karena layanan ekspor perlu menyelesaikan pemindaian tabel untuk mencoba mengekspor seluruh tabel. Cara yang baik untuk menentukan apakah tabel Anda dioptimalkan untuk ekspor adalah dengan menjalankan DBCC SHOW_STATISTICS dan memastikan bahwa RANGE_HI_KEY tidak null dan nilainya memiliki distribusi yang baik. Untuk detailnya, lihat DBCC SHOW_STATISTICS.
  • Untuk database yang lebih besar, ekspor/impor BACPAC mungkin memakan waktu lama, dan mungkin gagal karena berbagai alasan.

Catatan

BACPAC tidak dimaksudkan untuk digunakan guna operasi pencadangan dan pemulihan. Azure secara otomatis membuat cadangan untuk setiap database pengguna. Untuk detailnya, lihat Gambaran umum kelangsungan bisnis dan Pencadangan otomatis di Azure SQL Database atau Pencadangan otomatis di Azure SQL Managed Instance.

Portal Microsoft Azure

Mengekspor BACPAC database dari Azure SQL Managed Instance menggunakan portal Azure saat ini tidak didukung. Lihat Pertimbangan.

Catatan

Komputer yang memproses permintaan impor/ekspor yang diajukan melalui portal Microsoft Azure atau PowerShell perlu menyimpan file BACPAC serta file sementara yang dihasilkan oleh Data-Tier Application Framework (DacFX). Ruang disk yang diperlukan bervariasi secara signifikan di antara database dengan ukuran yang sama dan dapat memerlukan ruang disk hingga 3 kali ukuran database. Komputer yang menjalankan permintaan impor/ekspor hanya memiliki ruang disk lokal 450GB. Akibatnya, beberapa permintaan mungkin gagal dengan kesalahan There is not enough space on the disk. Dalam hal ini, solusinya adalah menjalankan SqlPackage pada komputer dengan ruang disk lokal yang cukup. Kami mendorong penggunaan SQLPackage untuk mengimpor/mengekspor database yang lebih besar dari 150 GB untuk menghindari masalah ini.

  1. Untuk mengekspor database menggunakan portal Microsoft Azure, buka halaman database Anda dan pilih Ekspor pada toolbar.

    Screenshot that highlights the Export button.

  2. Tentukan nama file BACPAC, pilih akun penyimpanan Azure dan kontainer yang ada untuk ekspor, lalu berikan informasi masuk yang sesuai untuk akses ke database sumber. Login admin SQL Server diperlukan di sini meskipun Anda adalah admin Azure, karena menjadi admin Azure tidak sama dengan memiliki izin admin di Azure SQL Database atau Azure SQL Managed Instance.

    Screenshot shows the Export Database page with username and password specified.

  3. Pilih OK.

  4. Untuk memantau kemajuan operasi ekspor, buka halaman untuk server yang berisi database yang sedang diekspor. Di bagian Manajemen data, pilih Impor/Ekspor riwayat.

Utilitas SQLPackage

Kami merekomendasikan penggunaan utilitas SQLPackage untuk skala dan performa di sebagian besar lingkungan produksi. Anda dapat menjalankan beberapa perintah SqlPackage secara paralel untuk subset tabel guna mempercepat operasi impor/ekspor.

Untuk mengekspor database di SQL Database menggunakan utilitas baris perintah SQLPackage, lihat Parameter dan properti ekspor. Utilitas SQLPackage tersedia untuk Windows, macOS, dan Linux.

Contoh ini menunjukkan cara mengekspor database menggunakan SqlPackage dengan Autentikasi Universal Direktori Aktif:

SqlPackage /a:Export /tf:testExport.BACPAC /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Azure Data Studio

Azure Data Studio adalah alat sumber terbuka gratis dan tersedia untuk Windows, Mac, dan Linux. Ekstensi "SQL Server dacpac" menyediakan antarmuka wizard ke operasi SqlPackage termasuk ekspor dan impor. Untuk informasi selengkapnya tentang menginstal dan menggunakan ekstensi, lihat Ekstensi dacpac SQL Server.

SQL Server Management Studio (SSMS)

SQL Server Management Studio menyediakan wizard untuk mengekspor database di Azure SQL Database atau database SQL Managed Instance ke file BACPAC. Lihat Ekspor Aplikasi Tahap Data.

PowerShell

Mengekspor BACPAC database dari Azure SQL Managed Instance menggunakan PowerShell tidak didukung. Lihat Pertimbangan.

Gunakan cmdlet New-AzSqlDatabaseExport untuk mengirimkan permintaan database ekspor ke layanan Azure SQL Database. Bergantung pada ukuran database Anda, operasi ekspor mungkin membutuhkan waktu untuk diselesaikan.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

Untuk memeriksa status permintaan ekspor, gunakan cmdlet Get-AzSqlDatabaseImportExportStatus. Menjalankan cmdlet ini segera setelah permintaan biasanya menampilkan Status: InProgress. Saat Anda melihat Status: Berhasil ekspor selesai.

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

Batalkan permintaan ekspor

Gunakan Operasi Database - Batalkan API atau perintah Powershell Stop-AzSqlDatabaseActivity untuk membatalkan permintaan ekspor. Berikut adalah contoh perintah PowerShell:

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

Catatan

Untuk membatalkan operasi ekspor, Anda harus memiliki salah satu peran berikut:

  • Peran Kontributor SQL DB atau
  • Peran Azure RBAC kustom dengan Microsoft.Sql/servers/databases/operations izin

Pembatasan

  • Mengekspor file BACPAC ke penyimpanan premium Azure menggunakan metode yang dibahas dalam artikel ini tidak didukung.
  • Penyimpanan di belakang firewall saat ini tidak didukung.
  • Penyimpanan yang tidak diubah saat ini tidak didukung.
  • Azure SQL Managed Instance saat ini tidak mendukung ekspor database ke file BACPAC menggunakan portal Azure atau Azure PowerShell. Untuk mengekspor instans terkelola ke dalam file BACPAC, gunakan SQL Server Management Studio (SSMS) atau SQLPackage.
  • Saat ini, layanan Impor/Ekspor tidak mendukung autentikasi ID Microsoft Entra saat MFA diperlukan.
  • Layanan Import\Export hanya mendukung autentikasi SQL dan ID Microsoft Entra. Import\Export tidak kompatibel dengan pendaftaran aplikasi Microsoft Identity.