Aracılığıyla paylaş


Hızlı Başlangıç: BACPAC dosyasını Azure SQL Database veya Azure SQL Managed Instance bir veritabanına aktarma

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

SQL Server veritabanını Azure SQL Database veya SQL Managed Instance .bacpac dosyası kullanarak içeri aktarabilirsiniz. Verileri Azure Blob depolamada depolanan bir BACPAC dosyasından (yalnızca standart depolama) veya şirket içi bir konumdaki yerel depolamadan içeri aktarabilirsiniz. Daha fazla ve daha hızlı kaynaklar sağlayarak içeri aktarma hızını en üst düzeye çıkarmak için içeri aktarma işlemi sırasında veritabanınızı daha yüksek bir hizmet katmanına ve işlem boyutuna sahip olacak şekilde ölçeklendirin. İçeri aktarma işlemi başarılı olduktan sonra ölçeği küçültebilirsiniz.

Azure portalını kullanma

Azure portalındaki bir BACPAC dosyasından içeri aktarmayı veya okumaya devam etme işlemini görmek için bu videoyu izleyin:

  • Azure portalıonly Azure SQL Database ve only içinde Azure Blob depolamada depolanan bir BACPAC dosyasından tek bir veritabanı oluşturmayı destekler.
  • Veritabanını BACPAC dosyasından Azure SQL Managed Instance'a geçirmek için SQL Server Management Studio veya SqlPackage komut satırı yardımcı programını kullanın. Azure portalı ve Azure PowerShell şu anda desteklenmiyor.

Uyarı

SqlPackage'dan oluşturulan 150 GB üzerindeki BACPAC dosyalarının Azure portalı veya Azure PowerShell üzerinden içeri aktarılmayabileceği ve File contains corrupted data belirten bir hata iletisiyle karşılaşabileceği bildirilmektedir. Bu bilinen bir sorunun sonucudur ve geçici çözüm BACPAC dosyasını içeri aktarmak için komut satırı yardımcı programını kullanmaktır SqlPackage . Daha fazla bilgi için bkz . SqlPackage ve sorun günlüğü.

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 komut satırı yardımcı programını ç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 komut satırı yardımcı programını kullanmanızı öneririz.

  1. Azure portalını kullanarak bir BACPAC dosyasından yeni bir veritabanına aktarmak için uygun sunucu sayfasını açın ve araç çubuğunda Veri tabanını içeri aktar öğesini seçin.

     Azure portalının mantıksal sunucuya genel bakış sayfasının ekran görüntüsü; veritabanı içeri aktarma seçili durumda.

  2. Yedeklemeyi seçin. Veritabanınızı barındıran depolama hesabını seçin ve ardından içeri aktarılacağınız BACPAC dosyasını seçin.

  3. Yeni veritabanı boyutunu belirtin (genellikle kaynakla aynıdır) ve hedef SQL Server kimlik bilgilerini sağlayın. Azure SQL Database'da yeni bir veritabanının olası değerlerinin listesi için bkz. Veri Tabanı Oluştur.

     Azure portalının ekran görüntüsü, Veritabanı içeri aktarma sayfası.

  4. Tamam'ı seçin.

  5. İçeri aktarma işleminin ilerleme durumunu izlemek için veritabanının sunucu sayfasını açın ve Ayarlar'ın altında İçeri/Dışarı Aktarma geçmişi'ni seçin. Başarılı olduğunda, içeri aktarma tamamlandı durumuna sahiptir.

    Azure portalının, sunucu genel bakış sayfasının ekran görüntüsü, veritabanı içeri aktarma durumunu gösteriyor.

  6. Veritabanının sunucuda canlı olduğunu doğrulamak için SQL veritabanları'nı seçin ve yeni veritabanının Çevrimiçi olduğunu doğrulayın.

Yönetilen kimlik doğrulama ile içeri aktarma (önizleme)

Azure SQL Database, managed identity kimlik doğrulaması kullanarak BACPAC dosyasını içeri aktarmayı destekler. Bu seçenek tam kimlik bilgisi içermeyen içeri aktarma işlemlerini etkinleştirir ve SQL kimlik doğrulamasını devre dışı bırakmayan veya yalnızca Microsoft Entra kimlik doğrulamasını zorunlu kılan ortamlar için önerilir.

Veritabanını yeni bir veritabanına veya mevcut boş bir veritabanı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ı içeri 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.
  • Kaynak Azure Storage hesabındaki Depolama Blob Veri Okuyucusu 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.

Aşağıdaki senaryolar desteklenmez:

  • Kiracılar arası içe aktarma işlemleri.
  • Yönetilen kimlik yalnızca veritabanı düzeyinde atanır.

Not

Yönetilen kimlik doğrulamasıyla aktarma şu anda preview aşamasındadır ve yalnızca Azure SQL Database için kullanılabilir.

SqlPackage kullanma

SqlPackage komut satırı yardımcı programını kullanarak bir SQL Server veritabanını içeri aktarmak için bkz. ek parametreleri ve özellikleri içeri aktarma. Windows, macOS veya Linux için en son SqlPackage indirebilirsiniz.

Ölçek ve performans için Azure portalını kullanmak yerine çoğu üretim ortamında SqlPackage kullanmanızı öneririz. BACPAC dosyalarını kullanarak geçiş hakkında SQL Server Müşteri Danışmanlığı Ekibi bloguna bakın. SQL Server'dan BACPAC Dosyalarını Kullanarak Azure SQL Veritabanına Geçiş.

DTU tabanlı sağlama modeli, her katman için belirli veritabanı maksimum boyut değerlerini destekler. Veritabanını içeri aktarırken desteklenen bu değerlerden birini kullanın.

Aşağıdaki SqlPackage komutu, veritabanını yerel depolama alanından adlı AdventureWorks2008R2mantıksal bir SQL sunucusuna aktarırmynewserver20170403. Yeni bir myMigratedDatabase adlı veritabanı, Premium hizmet katmanı ve P6 Hizmet Hedefi ile oluşturur. Bu değerleri ortamınıza uygun şekilde değiştirin.

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

Önemli

Şirket güvenlik duvarının arkasından Azure SQL Database bağlanmak için güvenlik duvarının 1433 numaralı bağlantı noktasının açık olması gerekir. SQL Managed Instance bağlanabilmek için nokta-saha bağlantısı veya ExpressRoute bağlantınız olması gerekmektedir.

Kullanıcı adı ve parolaya alternatif olarak Microsoft Entra ID (formerly Azure Active Directory) kullanabilirsiniz. Şu anda MFA gerektiğinde İçeri/Dışarı Aktarma hizmeti Microsoft Entra ID kimlik doğrulamasını desteklememektedir. /ua:true ve /tid:"yourdomain.onmicrosoft.com" için kullanıcı adı ve parola parametrelerini değiştirin. Bu örnekte, Microsoft Entra kimlik doğrulamasıyla SqlPackage kullanarak veritabanını içeri aktarma işlemi gösterilmektedir:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /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.

PowerShell kullanma

Not

Azure SQL Managed Instance şu anda Azure PowerShell kullanarak bir veritabanını BACPAC dosyasından örnek veritabanına geçirmeyi desteklemez. SQL yönetilen örneğine içeri aktarmak için SQL Server Management Studio veya SQLPackage kullanın.

Not

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. Gerekli disk alanı, aynı boyuttaki DB'ler arasında önemli ölçüde farklılık gösterir ve veritabanı boyutunun üç katına kadar sürebilir. İçeri/dışarı aktarma isteğini çalıştıran makinelerde yalnızca 450 GB yerel disk alanı vardır. Sonuç olarak, bazı istekler şu hatayla başarısız olabilir: There is not enough space on the disk. Bu durumda geçici çözüm, yeterli yerel disk alanına sahip bir makinede SqlPackage çalıştırmaktır. 150 GB'tan büyük veritabanlarını içeri/dışarı aktarırken bu sorundan kaçınmak için SqlPackage kullanın.

Önemli

PowerShell Azure Resource Manager (AzureRM) modülü 29 Şubat 2024'te kullanım dışı bırakılmıştır. Gelecekteki tüm geliştirmelerde Az.Sql modülü kullanılmalıdır. Kullanıcıların destek ve güncelleştirmelerin devam etmesini sağlamak için AzureRM'den Az PowerShell modülüne geçmeleri tavsiye edilir. AzureRM modülü artık korunmaz veya desteklenmez. Az PowerShell modülündeki ve AzureRM modüllerindeki komutların bağımsız değişkenleri önemli ölçüde aynıdır. Uyumlulukları hakkında daha fazla bilgi için yeni Az PowerShell modülünün tanıtımı bölümüne bakınız: .

Azure'a içeri aktarma veritabanı isteği göndermek için New-AzSqlDatabaseImport cmdlet'ini kullanın. Veritabanı boyutuna bağlı olarak içeri aktarma işleminin tamamlanması biraz zaman alabilir. DTU tabanlı sağlama modeli, her katman için belirli veritabanı maksimum boyut değerlerini destekler. Veritabanını içeri aktarırken desteklenen bu değerlerden birini kullanın.

$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)

İçeri aktarma işleminin ilerleme durumunu denetlemek için Get-AzSqlDatabaseImportExportStatus cmdlet'ini kullanabilirsiniz. İsteğin hemen ardından cmdlet'in çalıştırılması genellikle Status: InProgress döndürür. öğesini gördüğünüzde Status: Succeedediçeri aktarma işlemi tamamlanır.

$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

İçeri aktarma isteğini iptal etme

Aşağıdaki örnekte olduğu gibi Veritabanı İşlemleri - İptal API'sini veya Stop-AzSqlDatabaseActivity PowerShell komutunu kullanın:

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

İçeri aktarmayı iptal etmek için gereken izinler

İçeri aktarma işlemini iptal etmek için aşağıdaki rollerden birinin üyesi olmanız gerekir:

Yeni veritabanının uyumluluk düzeyi

  • İçeri aktarılan veritabanının uyumluluk düzeyi, kaynak veritabanının uyumluluk düzeyine bağlıdır.

  • Veritabanınızı içeri aktardıktan sonra veritabanını geçerli uyumluluk düzeyinde veya daha yüksek bir düzeyde çalıştırmayı seçebilirsiniz. Veritabanını belirli bir uyumluluk düzeyinde çalıştırmanın etkileri ve seçenekleri hakkında daha fazla bilgi için bkz. ALTER DATABASE uyumluluk düzeyi. Uyumluluk düzeyleriyle ilgili diğer veritabanı düzeyi ayarları hakkında bilgi için bkz. ALTER DATABASE SCOPED CONFIGURATION.

Sınırlamalar

  • Elastik havuzdaki bir veritabanına içeri aktarma işlemi Azure portalı, Azure PowerShell veya Azure CLI aracılığıyla desteklenmez. Bunun yerine, elastik havuzda bir veritabanı oluşturun ve sqlpackage import kullanın veya herhangi bir yöntemi kullanarak tek bir veritabanına veri aktarın ve veritabanını elastik havuza taşıyın.
  • İçeri Aktarma Hizmeti, Azure hizmetlerine erişime izin ver ayarı KAPALI olarak ayarlandığında çalışmaz. Ancak, sqlpackage'ı bir Azure VM'den el ile çalıştırarak veya DacFx API'sini kullanarak doğrudan kodunuzda dışarı aktarma gerçekleştirerek sorunu çözebilirsiniz.
  • İçeri aktarma, yeni bir veritabanı oluştururken yedek depolama yedekliliğini belirtmeyi desteklemez ve varsayılan coğrafi yedekli yedekleme depolama ile oluşturur. Geçici çözüm olarak, önce Azure portalını veya PowerShell'i kullanarak istenen yedekleme depolama yedekliliğine sahip boş bir veritabanı oluşturun ve ardından BACPAC'yi bu boş veritabanına aktarın.
  • Güvenlik duvarının arkasındaki depolama şu anda desteklenmiyor.
  • İçeri aktarma işlemi sırasında aynı ada sahip bir veritabanı oluşturmayın. İçeri aktarma işlemi, belirtilen adla yeni bir veritabanı oluşturur.
  • Ş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.

Ek araçlar

Bu sihirbazları da kullanabilirsiniz.