Mulai cepat: Mengimpor file bacpac ke database di Azure SQL Database atau Azure SQL Managed Instance

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Anda dapat mengimpor database SQL Server ke Azure SQL Database atau SQL Managed Instance menggunakan file .bacpac . Anda dapat mengimpor data dari file bacpac yang disimpan di penyimpanan Azure Blob (hanya penyimpanan standar) atau dari penyimpanan lokal di lokasi lokal. Untuk memaksimalkan kecepatan impor dengan menyediakan sumber daya yang lebih banyak dan lebih cepat, skalakan database Anda ke tingkat layanan yang lebih tinggi dan ukuran komputasi selama proses impor. Anda kemudian dapat menurunkan skala setelah impor berhasil.

Menggunakan portal Microsoft Azure

Tonton video ini untuk melihat cara mengimpor dari file bacpac di portal Azure atau lanjutkan membaca:

Portal Azure mendukung pembuatan database tunggal di Azure SQL Database dan hanya dari file bacpac yang disimpan di penyimpanan Azure Blob.

Untuk memigrasikan database ke Azure SQL Managed Instance dari file bacpac, gunakan SQL Server Management Studio atau SQLPackage, menggunakan portal Azure atau Azure PowerShell saat ini tidak didukung.

Catatan

Mesin yang memproses permintaan impor/ekspor yang dikirimkan melalui portal Azure atau PowerShell perlu menyimpan file bacpac serta file sementara yang dihasilkan oleh Kerangka Kerja Aplikasi Tingkat Data (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 150GB untuk menghindari masalah ini.

  1. Untuk mengimpor dari file bacpac ke database tunggal baru menggunakan portal Azure, buka halaman server yang sesuai lalu, pada toolbar, pilih Impor database.

    Screenshot of the Azure portal, logical server overview page, with database import selected.

  2. Pilih Pilih cadangan. Pilih akun penyimpanan yang menghosting database Anda, lalu pilih file bacpac yang akan diimpor.

  3. Tentukan ukuran database baru (biasanya sama dengan asal) dan berikan informasi masuk SQL Server tujuan. Untuk daftar nilai yang mungkin untuk database baru di Azure SQL Database, lihat Membuat Database.

    Screenshot of the Azure portal, Database import page.

  4. Pilih OK.

  5. Untuk memantau kemajuan impor, buka halaman server database, dan, di bawah Pengaturan, pilih Riwayat Impor/Ekspor. Bila berhasil, impor memiliki status Selesai.

    Screenshot of the Azure portal, server overview page, showing the database import status.

  6. Untuk memverifikasi database langsung di server, pilih database SQL dan verifikasi database baru adalah Online.

Menggunakan SqlPackage

Untuk mengimpor database SQL Server menggunakan utilitas baris-perintah SqlPackage, lihat mengimpor parameter dan properti. Anda dapat mengunduh SqlPackage terbaru untuk Windows, macOS, atau Linux.

Untuk skala dan performa, sebaiknya gunakan SqlPackage di sebagian besar lingkungan produksi daripada menggunakan portal Microsoft Azure. Untuk blog SQL Server Customer Advisory Team tentang migrasi menggunakan BACPAC file, lihat melakukan migrasi dari Microsoft SQL Server ke Azure SQL Database menggunakan File BACPAC.

Model provisi berbasis DTU mendukung nilai ukuran maksimal database tertentu untuk setiap tingkatan. Saat mengimpor database, gunakan salah satu nilai yang didukung ini.

Perintah SqlPackage berikut mengimpor AdventureWorks2008R2 database dari penyimpanan lokal ke server SQL logis bernama mynewserver20170403. Ini membuat database baru yang disebut myMigratedDatabase dengan tingkat layanan Premium dan Tujuan Layanan P6. Ubah nilai-nilai ini sebagaimana mestinya untuk lingkungan Anda.

SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

Penting

Untuk menyambungkan ke Azure SQL Database dari balik firewall perusahaan, firewall harus membuka port 1433. Untuk menyambungkan ke SQL Managed Instance, Anda harus memiliki koneksi titik-ke-situs atau koneksi rute ekspres.

Sebagai alternatif untuk nama pengguna dan kata sandi, Anda dapat menggunakan ID Microsoft Entra (sebelumnya Azure Active Directory). Saat ini, layanan Impor/Ekspor tidak mendukung autentikasi ID Microsoft Entra saat MFA diperlukan. Ganti parameter nama pengguna dan kata sandi untuk /ua:true dan /tid:"yourdomain.onmicrosoft.com". Contoh ini memperlihatkan cara mengimpor database menggunakan SqlPackage dengan autentikasi Microsoft Entra:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Azure Data Studio

Azure Data Studio adalah alat sumber terbuka gratis dan tersedia untuk Windows, macOS, 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 dokumentasi ekstensi dacpac SQL Server.

Menggunakan PowerShell

Catatan

Azure SQL Managed Instance saat ini tidak mendukung migrasi database ke dalam database instans dari file bacpac menggunakan Azure PowerShell. Untuk mengimpor ke instans terkelola SQL, gunakan SQL Server Management Studio atau SQLPackage.

Catatan

Komputer yang memproses permintaan impor/ekspor yang diajukan melalui portal 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 DB dengan ukuran yang sama dan dapat memakan waktu hingga tiga kali dari ukuran database. Komputer yang menjalankan permintaan impor/ekspor hanya memiliki ruang disk lokal 450GB. Akibatnya, beberapa permintaan mungkin gagal dengan kesalahan "Tidak ada cukup ruang pada disk". Dalam hal ini, solusinya adalah menjalankan SqlPackage pada komputer dengan ruang disk lokal yang cukup. Saat mengimpor/mengekspor database yang lebih besar dari 150GB, gunakan SqlPackage untuk menghindari masalah ini.

Penting

Modul PowerShell Azure Resource Manager (RM) masih didukung, tetapi semua pengembangan di masa depan 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.

Gunakan cmdlet New-AzSqlDatabaseImport untuk mengirimkan permintaan database impor ke Azure. Bergantung pada ukuran database, impor mungkin membutuhkan waktu untuk menyelesaikannya. Model provisi berbasis DTU mendukung nilai ukuran maksimal database tertentu untuk setiap tingkatan. Saat mengimpor database, gunakan salah satu nilai yang didukung ini.

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
    -ServerName "<serverName>" -DatabaseName "<databaseName>" `
    -DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
    -StorageKey $(Get-AzStorageAccountKey `
        -ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -Edition "Premium" -ServiceObjectiveName "P6" `
        -AdministratorLogin "<userId>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

Anda dapat menggunakan cmdlet Get-AzSqlDatabaseImportExportStatus untuk memeriksa kemajuan impor. Menjalankan cmdlet segera setelah permintaan biasanya kembali Status: InProgress. Impor selesai ketika Anda melihat Status: Succeeded.

$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink

[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
    $importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}

[Console]::WriteLine("")
$importStatus

Tip

Untuk contoh skrip lain, lihat Mengimpor database dari file BACPAC.

Membatalkan permintaan impor

Gunakan perintah Operasi Database - Batalkan API atau Stop-AzSqlDatabaseActivity PowerShell, seperti dalam contoh berikut:

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

Izin yang diperlukan untuk membatalkan impor

Untuk membatalkan operasi impor, Anda harus menjadi anggota salah satu peran berikut:

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

Tingkat kompatibilitas database baru

  • Tingkat kompatibilitas database yang diimpor didasarkan pada tingkat kompatibilitas database sumber.
  • Setelah mengimpor database, Anda bisa memilih untuk mengoperasikan database pada tingkat kompatibilitasnya saat ini atau pada tingkat yang lebih tinggi. Untuk informasi selengkapnya tentang implikasi dan opsi untuk mengoperasikan database pada tingkat kompatibilitas tertentu, lihat MENGUBAH Tingkat Kompatibilitas DATABASE. Lihat juga MENGUBAH KONFIGURASI CAKUPAN DATABASE untuk informasi tentang pengaturan tingkat database lainnya yang terkait dengan tingkat kompatibilitas.

Pembatasan

  • Mengimpor ke database dalam kumpulan elastis tidak didukung. Anda bisa mengimpor data ke dalam satu database, lalu memindahkan database ke kumpulan elastis.
  • Impor Layanan Ekspor tidak berfungsi saat Perbolehkan akses ke layanan Azure diatur ke NONAKTIF. Namun, Anda dapat mengatasi masalah dengan menjalankan SqlPackage secara manual dari Azure VM, atau melakukan ekspor langsung dalam kode Anda dengan menggunakan DACFx API.
  • Impor tidak mendukung menentukan redundansi penyimpanan cadangan saat membuat database baru dan membuat dengan redundansi penyimpanan cadangan geo-berlebihan default. Untuk mengatasinya, pertama-tama buat database kosong dengan redundansi penyimpanan cadangan yang diinginkan menggunakan portal Azure atau PowerShell lalu impor bacpac ke database kosong ini.
  • Penyimpanan di belakang firewall saat ini tidak didukung.
  • Selama proses impor, jangan membuat database dengan nama yang sama. Proses impor membuat database baru dari nama yang ditentukan.
  • 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.

Alat tambahan

Anda juga bisa menggunakan wizard ini.