BACPAC dosyasına aktarma - Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği

Şunlar için geçerlidir: Azure SQL Veritabanı Azure SQL Yönetilen Örneği

Bir 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 depolama alanında şirket içi bir konumda depolanabilir ve daha sonra Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya SQL Server örneğine geri aktarılabilir.

Not

Hiper Ölçek veritabanları katmanındaki Azure SQL dışarı aktarma işlevi artık önizleme aşamasındadır.

Dikkat edilmesi gerekenler

  • Dışarı aktarma işleminin işlem açısından tutarlı olması için, dışarı aktarma sırasında 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şivmek için SqlPackage.exe ile yerel depolama alanına aktarın.

  • Bu makalede anlatılan yöntemleri kullanarak bir BACPAC dosyasını Azure premium depolama alanına aktaramazsınız.

  • Güvenlik duvarının arkasındaki depolama şu anda desteklenmiyor.

  • Sabit depolama şu anda desteklenmiyor.

  • Depolama dosyası adı veya StorageURI giriş değeri 128 karakterden daha az olmalıdır ve '.' ile bitemez ve boşluk karakteri veya '<,>*,%,&,:,/?' gibi özel karakterler içeremez.

  • 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 etkinliğini durdurun.
    • Tüm büyük tablolarda null olmayan değerlerle kümelenmiş bir dizin kullanın. Kümelenmiş dizinler olmadan, 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 iyileştirilip iyileştirilmediğini belirlemenin iyi bir yolu DBCC SHOW_STATISTICS çalıştırmak ve RANGE_HI_KEY 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.
  • Azure SQL Yönetilen Örneği ş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.

  • Hiper Ölçek hizmet katmanındaki veritabanları için BACPAC Azure portal dışarı/içeri aktarma, New-AzSqlDatabaseExport veya New-AzSqlDatabaseImport kullanarak PowerShell'den, az sql db export ve az sql dbimport kullanan Azure CLI'dan ve REST API'den desteklenmemektedir. Daha küçük Hiper Ölçek veritabanları (200 GB'a kadar) için BACPAC içeri/dışarı aktarma, SSMS ve SQLPackage sürüm 18.4 ve üzeri kullanılarak desteklenir. 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 yedeklemeleri SQL Veritabanı.

Azure portal

Veritabanının BACPAC'sini Azure SQL Yönetilen Örneği veya Azure portal kullanarak Hiper Ölçek hizmet katmanındaki bir veritabanından dışarı aktarma işlemi şu anda desteklenmemekte. Bkz. Önemli Noktalar.

Not

Azure portal veya PowerShell aracılığıyla gönderilen içeri/dışarı aktarma isteklerini işleyen makinelerin BACPAC dosyasının yanı sıra Data-Tier Application Framework (DacFX) tarafından oluşturulan geçici dosyaları depolaması gerekir. Gerekli disk alanı, aynı boyuttaki 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 makinelerin 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, sqlpackage.exe yardımcı programını yeterli yerel disk alanı olan bir makinede ç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 kullanılmasını öneririz.

  1. Azure portal kullanarak bir veritabanını dışarı aktarmak için veritabanınızın sayfasını açın ve araç çubuğunda Dışarı Aktar'ı 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. Azure yöneticisi olsanız bile burada SQL Server yönetici oturum açma bilgileri gereklidir; azure yöneticisi olmak, Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği yönetici izinlerine sahip olmak için yeterli değildir.

    Veritabanı dışarı aktarma

  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.

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 amacıyla tabloların alt kümeleri için birden çok sqlpackage.exe komutunu paralel olarak çalıştırabilirsiniz.

SQLPackage komut satırı yardımcı programını kullanarak veritabanını SQL Veritabanı'de dışarı aktarmak için bkz. Parametreleri ve özellikleri dışarı aktarma. SQLPackage yardımcı programı Windows, macOS ve Linux için kullanılabilir.

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

sqlpackage.exe /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 ücretsiz, açık kaynak bir araçtır ve Windows, Mac ve Linux için kullanılabilir. "SQL Server dacpac" uzantısı, dışarı ve içeri aktarma dahil olmak üzere SqlPackage işlemleri için bir sihirbaz arabirimi sağlar. Uzantıyı yükleme ve kullanma hakkında daha fazla bilgi için uzantının belgeler sayfasına bakın.

SQL Server Management Studio (SSMS)

SQL Server Management Studio'nin en yeni sürümleri, Azure SQL Veritabanındaki bir veritabanını veya SQL Yönetilen Örneği veritabanını BACPAC dosyasına dışarı aktarmaya yönelik bir sihirbaz sağlar. Bkz. Veri Katmanı Uygulamasını Dışarı Aktarma.

PowerShell

PowerShell kullanarak bir veritabanının BACPAC'sini Azure SQL Yönetilen Örneği veya Hiper Ölçek hizmet katmanındaki bir veritabanından dışarı aktarma işlemi şu anda desteklenmiyor. Bkz. Önemli Noktalar.

Azure SQL Veritabanı 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. İsteğin hemen ardından bu cmdlet çalıştırılırken genellikle Durum: InProgress döndürülür. Durum: Başarılı oldu ifadesini gördüğünüzde dışarı aktarma işlemi 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

Sonraki adımlar