Aracılığıyla paylaş


BACPAC dosyasına aktarma - Azure SQL Database ve Azure SQL Managed Instance

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

Veritabanını arşivleme veya başka bir platforma taşıma amacıyla dışarı aktarmanız gerektiğinde, veritabanı şemasını ve verilerini bir BACPAC dosyasına aktarabilirsiniz. BACPAC dosyası, veritabanındaki meta verileri ve verileri içeren BACPAC uzantısına sahip bir ZIP dosyasıdır. BACPAC dosyası Azure Blob depolama alanında veya yerel depolamada şirket içi bir konumda depolanabilir ve daha sonra Azure SQL Database, Azure SQL Managed Instance veya SQL Server örneği içeri aktarılabilir.

Dikkat edilmesi gereken noktalar

Dışarı aktarma işleminin işlem açısından tutarlı olması için, dışarı aktarma sırasında hiçbir yazma etkinliği gerçekleşmediğinden veya veritabanınızın işlem açısından tutarlı bir kopyasından dışarı aktardığınızdan emin olmanız gerekir.

Blob depolamaya aktarıyorsanız BACPAC dosyasının boyutu üst sınırı 200 GB'tır. Daha büyük bir BACPAC dosyasını arşiv etmek için SqlPackage ile yerel depolamaya aktarın.

Private link kullanarak bir Azure SQL Veritabanı'nı içe veya dışa aktarın deneme sürümündedir.

Azure Storage dosya adı . ile bitemez ve boşluk karakteri veya < gibi özel karakterler içeremez, >, *, %, &, :, \, /, ?. Dosya adı 128 karakterden daha az olmalıdır.

Dışarı aktarma işlemi 20 saati aşarsa iptal edilebilir. Dışarı aktarma sırasında performansı artırmak için şunları yapabilirsiniz:

  • İşlem boyutunuzu geçici olarak artırın.

  • Dışarı aktarma sırasında tüm okuma ve yazma etkinliklerini sonlandırın.

  • Tüm büyük tablolarda null olmayan değerlerle kümelenmiş dizin kullanın. Kümelenmiş dizinler olmadığında, dışarı aktarma işlemi 6-12 saatten uzun sürerse başarısız olabilir. Bunun nedeni, dışarı aktarma hizmetinin tablonun tamamını dışarı aktarmayı denemek için tablo taramasını tamamlaması gerekir. Tablolarınızın dışarı aktarma için optimize edilip edilmediğini belirlemenin iyi bir yolu, DBCC SHOW_STATISTICS komutunu çalıştırmak ve RANGE_HI_KEY'nin null olmadığından ve değerinin iyi bir dağılıma sahip olduğundan emin olmaktır. Ayrıntılar için bkz. DBCC SHOW_STATISTICS (Transact-SQL).

  • Daha büyük veritabanları için BACPAC dışarı/içeri aktarma işlemi uzun sürebilir ve çeşitli nedenlerle başarısız olabilir.

Not

BACPAC'lerin yedekleme ve geri yükleme işlemleri için kullanılması amaçlanmamıştır. Azure her kullanıcı veritabanı için otomatik olarak yedeklemeler oluşturur. Ayrıntılar için bkz. iş sürekliliğine genel bakış ve Azure SQL Database'de Otomatik Yedeklemeler veya Azure SQL Yönetilen Örneği'nde Otomatik Yedeklemeler.

Azure portalından dışarı aktarma

Not

Azure portalı veya PowerShell aracılığıyla gönderilen içeri/dışarı aktarma isteklerini işleyen makinelerin BACPAC dosyasını ve Data-Tier Application Framework (DacFX) tarafından oluşturulan geçici dosyaları depolaması gerekir. Gereken disk alanı, aynı boyuta sahip veritabanları arasında önemli ölçüde farklılık gösterir ve veritabanının boyutunun üç katına kadar disk alanı gerektirebilir. İçeri/dışarı aktarma isteğini çalıştıran makinelerde yalnızca 450 GB yerel disk alanı vardır. Sonuç olarak, bazı istekler hatasıyla There is not enough space on the diskbaşarısız olabilir. Bu durumda geçici çözüm, yeterli yerel disk alanına sahip bir makinede SqlPackage çalıştırmaktır. Bu sorunu önlemek için 150 GB'tan büyük veritabanlarını içeri/dışarı aktarmak için SQLPackage yardımcı programını kullanın.

  1. veritabanını Azure portal kullanarak dışarı aktarmak için veritabanınızın sayfasını açın ve araç çubuğundan Export seçin.

    Dışarı Aktar düğmesini vurgulayan ekran görüntüsü.

  2. BACPAC dosya adını belirtin, dışarı aktarma için mevcut bir Azure depolama hesabı ve kapsayıcısını seçin ve ardından kaynak veritabanına erişim için uygun kimlik bilgilerini sağlayın. sql Server yönetici oturum açma bilgileri burada Azure yöneticisi olsanız bile gereklidir çünkü Azure yönetici olmak Azure SQL Database veya Azure SQL Managed Instance yönetici izinlerine sahip olmak için yeterli değildir.

    Kullanıcı adı ve parolanın belirtildiği Veritabanını Dışarı Aktar sayfasını gösteren ekran görüntüsü.

  3. Tamam'ı seçin.

  4. Dışarı aktarma işleminin ilerleme durumunu izlemek için, dışarı aktarılmakta olan veritabanını içeren sunucunun sayfasını açın. Veri yönetimi'nin altında İçeri/Dışarı Aktarma geçmişi'ne tıklayın.

Yönetilen kimlik doğrulaması ile dışarı aktarma (önizleme)

SQL yöneticisi parolaları veya depolama erişim anahtarları sağlama gereksinimini ortadan kaldırmak için managed identity kimlik doğrulamasını kullanarak Azure SQL Database'daki bir veritabanını BACPAC dosyasına aktarabilirsiniz.

Ayrıntılı bir öğretici için bkz. İçeri ve dışarı aktarma (önizleme) ile yönetilen kimliği kullanma.

Yönetilen kimlik kimlik doğrulaması kullanarak bir BACPAC dosyasını dışarı aktarmak için aşağıdaki yapılandırma gereklidir:

  • Azure SQL Database için mantıksal sunucuya atanmış kullanıcı tarafından atanan yönetilen kimlik (UAMI).
  • Sunucuda yönetilen kimlik Microsoft Entra administrator olarak yapılandırılmıştır.
  • Hedef Azure Storage hesabındaki Depolama Blob Verileri Katkıda Bulunanı rolüne yönetilen kimlik atanır. Bu yönetilen kimlik, sunucuya atanan kimlikle veya farklı bir kimlikle aynı olabilir.
  • Mantıksal sunucu, yönetilen kimlik ve depolama hesabı aynı Microsoft Entra kiracısında bulunur.

Not

Yönetilen kimlik kimlik doğrulaması ile dışa aktarma şu anda önizleme aşamasındadır ve yalnızca Azure SQL Veritabanı için kullanılabilir.

SQLPackage yardımcı programı

Çoğu üretim ortamında ölçek ve performans için SQLPackage yardımcı programının kullanılmasını öneririz. İçeri/dışarı aktarma işlemlerini hızlandırmak için tabloların alt kümelerinde birden çok SqlPackage komutunu paralel olarak çalıştırabilirsiniz.

SQL Veritabanı'nda SQLPackage komut satırı yardımcı programını kullanarak bir veritabanını dışa aktarmak için, dışa aktarma parametreleri ve özelliklerine bakın. SQLPackage yardımcı programı Windows, macOS ve Linux için kullanılabilir.

Bu örnekte, Active Directory Evrensel Kimlik Doğrulaması ile SqlPackage kullanarak veritabanını dışarı aktarma işlemi gösterilmektedir:

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

Visual Studio Code

Visual Studio Code için MSSQL uzantısı, Windows, macOS ve Linux için kullanılabilen ücretsiz ve açık kaynak bir uzantıdır. Uzantı, dışarı ve içeri aktarma dahil olmak üzere SqlPackage işlemleri için Veri Katmanı Uygulaması (Önizleme) deneyimini içerir. Uzantıyı yükleme ve kullanma hakkında daha fazla bilgi için Visual Studio Code için MSSQL uzantısına bakın.

SQL Server Management Studio (SSMS)

SQL Server Management Studio Azure SQL Database veya SQL Managed Instance veritabanındaki bir veritabanını BACPAC dosyasına dışarı aktarma sihirbazı sağlar. Veri Katmanı Uygulamasını Dışarı Aktarma bölümüne bakın.

PowerShell

PowerShell kullanarak veritabanının BACPAC'sini Azure SQL Managed Instance dışarı aktarma desteklenmez. Bkz. Önemli Noktalar.

Azure SQL Database hizmetine bir dışarı aktarma veritabanı isteği göndermek için New-AzSqlDatabaseExport cmdlet'ini kullanın. Veritabanınızın boyutuna bağlı olarak dışarı aktarma işleminin tamamlanması biraz zaman alabilir.

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

Dışarı aktarma isteğinin durumunu denetlemek için Get-AzSqlDatabaseImportExportStatus cmdlet'ini kullanın. İstek sonrasında bu cmdlet'i çalıştırmak genellikle Durum: InProgress değerini döndürür. Durum: Başarılı ifadesini gördüğünüzde dışarı aktarma tamamlandı.

$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

Dışarı aktarma isteğini iptal etme

Dışarı aktarma isteğini iptal etmek için Veritabanı İşlemleri - İPTAL API'sini veya PowerShell Stop-AzSqlDatabaseActivity komutunu kullanın. Aşağıda örnek bir PowerShell komutu verilmiştir:

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

Not

Dışarı aktarma işlemini iptal etmek için aşağıdaki rollerden birine sahip olmanız gerekir:

Sınırlamalar

  • Bu makalede açıklanan yöntemleri kullanarak bir BACPAC dosyasının Azure premium depolamaya aktarılması desteklenmez.
  • Güvenlik duvarının arkasındaki depolama şu anda desteklenmiyor.
  • Sabit depolama şu anda desteklenmiyor.
  • Azure SQL Managed Instance şu anda Azure portalı veya Azure PowerShell kullanarak veritabanını BACPAC dosyasına aktarmayı desteklemez. Yönetilen örneği BACPAC dosyasına aktarmak için SQL Server Management Studio (SSMS) veya SQLPackage kullanın.
  • Şu anda MFA gerektiğinde İçeri/Dışarı Aktarma hizmeti Microsoft Entra ID kimlik doğrulamasını desteklememektedir.
  • İçeri/Dışarı Aktarma hizmetleri yalnızca SQL kimlik doğrulama ve Microsoft Entra ID destekler. import\export, Microsoft Identity uygulama kaydıyla uyumlu değildir.