Mevcut ayrılmış SQL havuzunu geri yükleme

Bu makalede Azure portalı, Synapse Studio ve PowerShell'i kullanarak Azure Synapse Analytics'te mevcut bir ayrılmış SQL havuzunu geri yüklemeyi öğreneceksiniz. Bu makale hem geri yüklemeler hem de coğrafi geri yüklemeler için geçerlidir.

Not

Bu kılavuz, yalnızca Azure Synapse çalışma alanlarındaki ayrılmış SQL havuzlarına yöneliktir. Tek başına ayrılmış SQL havuzları (eski adı SQL DW) için bkz . Mevcut bir ayrılmış SQL havuzunu (eski adı SQL DW) geri yükleme.

Mevcut ayrılmış SQL havuzunu Synapse Studio aracılığıyla geri yükleme

  1. Azure Portal’ında oturum açın.

  2. Azure Synapse çalışma alanınıza gidin.

  3. Başlarken ->Synapse Studio'yu açın altında Aç'ı seçin. Screenshot from Synapse Studio, showing the Open Synapse Studio box and Open link.

  4. Sol gezinti bölmesinde Veri'yi seçin.

  5. Havuzları yönet'i seçin.

  6. Azure Synapse Analytics çalışma alanında yeni bir ayrılmış SQL havuzu oluşturmak için + Yeni'yi seçin.

  7. Ek Ayarlar sekmesinde geri yükleneceği bir Geri Yükleme Noktası seçin.

    Coğrafi geri yükleme gerçekleştirmek istiyorsanız, kurtarmak istediğiniz çalışma alanını ve ayrılmış SQL havuzunu seçin.

  8. Otomatik Geri Yükleme Noktaları'nın veya Kullanıcı Tanımlı Geri Yükleme Noktalarının birini seçin.

    Screenshot from the Azure portal, Create SQL pool page, Additional settings page. For Restore point type, the Automatic restore points radio button is selected.

    • Ayrılmış SQL havuzunun herhangi bir otomatik geri yükleme noktası yoksa, birkaç saat bekleyin veya geri yüklemeden önce kullanıcı tanımlı bir geri yükleme noktası oluşturun. Kullanıcı Tanımlı Geri Yükleme Noktaları için mevcut bir geri yükleme noktası seçin veya yenisini oluşturun.

    • Ayrılmış bir SQL havuzunu farklı bir çalışma alanından geri yüklemek istiyorsanız geçerli çalışma alanınızdan Yeni ayrılmış SQL havuzu'yu seçin. Ek ayarlar sekmesinde Mevcut verileri kullan'ı bulun ve Geri yükleme noktası seçeneğini belirleyin. Yukarıdaki ekran görüntüsünde gösterildiği gibi, geri yükleyebileceğiniz Sunucu veya çalışma alanı adını seçebilirsiniz.

    • Coğrafi yedeklemeyi geri yüklüyorsanız, kaynak bölgede bulunan çalışma alanını ve geri yüklemek istediğiniz ayrılmış SQL havuzunu seçin.

    Not

    Var olan bir havuzla aynı ada sahip bir SQL havuzunun yerinde geri yüklemesini gerçekleştiremezsiniz. SQL havuzunun aynı çalışma alanında veya farklı bir çalışma alanında olmasına bakılmaksızın.

  9. Gözden geçir + Oluştur’u seçin.

Mevcut ayrılmış SQL havuzunu Azure portal aracılığıyla geri yükleme

  1. Azure Portal’ında oturum açın.

  2. Geri yüklemek istediğiniz ayrılmış SQL havuzuna gidin.

  3. Genel Bakış sayfasının en üstünde Geri yükle’yi seçin.

    Screenshot from the Azure portal, showing the SQL pool overview page. The Restore button is highlighted.

  4. Otomatik Geri Yükleme Noktaları'nın veya Kullanıcı Tanımlı Geri Yükleme Noktalarının birini seçin.

    Ayrılmış SQL havuzunun herhangi bir otomatik geri yükleme noktası yoksa, geri yüklemeden önce birkaç saat bekleyin veya kullanıcı tanımlı bir geri yükleme noktası oluşturun.

    Coğrafi geri yükleme gerçekleştirmek istiyorsanız, kurtarmak istediğiniz çalışma alanını ve ayrılmış SQL havuzunu seçin.

  5. Gözden geçir + Oluştur’u seçin.

Mevcut ayrılmış SQL havuzunu PowerShell aracılığıyla geri yükleme

  1. Bir PowerShell terminali açın.

  2. Azure hesabınıza Bağlan ve hesabınızla ilişkili tüm abonelikleri listeleyin.

  3. Geri yüklenecek SQL havuzunu içeren aboneliği seçin.

  4. Ayrılmış SQL havuzu için geri yükleme noktalarını listeleyin.

  5. RestorePointCreationDate kullanarak istediğiniz geri yükleme noktasını seçin.

  6. Restore-AzSynapseSqlPool PowerShell cmdlet'ini kullanarak ayrılmış SQL havuzunu istediğiniz geri yükleme noktasına geri yükleyin.

  7. Geri yüklenen ayrılmış SQL havuzunun çevrimiçi olduğunu doğrulayın.

    
    $SubscriptionName="<YourSubscriptionName>"
    $ResourceGroupName="<YourResourceGroupName>"
    $WorkspaceName="<YourWorkspaceNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
    #$TargetResourceGroupName="<YourTargetResourceGroupName>" # uncomment to restore to a different workspace.
    #$TargetWorkspaceName="<YourtargetWorkspaceNameWithoutURLSuffixSeeNote>"  
    $SQLPoolName="<YourDatabaseName>"
    $NewSQLPoolName="<YourDatabaseName>"
    
    Connect-AzAccount
    Get-AzSubscription
    Select-AzSubscription -SubscriptionName $SubscriptionName
    
    # list all restore points
    Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName -Name $SQLPoolName
    # Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
    $PointInTime="<RestorePointCreationDate>"
    
    # Get the specific SQL pool to restore
    $SQLPool = Get-AzSynapseSqlPool -ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName -Name $SQLPoolName
    # Transform Synapse SQL pool resource ID to SQL database ID because currently the restore command only accepts the SQL database ID format.
    $DatabaseID = $SQLPool.Id -replace "Microsoft.Synapse", "Microsoft.Sql" `
        -replace "workspaces", "servers" `
        -replace "sqlPools", "databases"
    
    # Restore database from a restore point
    $RestoredDatabase = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $PointInTime -ResourceGroupName $SQLPool.ResourceGroupName `
        -WorkspaceName $SQLPool.WorkspaceName -TargetSqlPoolName $NewSQLPoolName –ResourceId $DatabaseID -PerformanceLevel DW100c
    
    # Use the following command to restore to a different workspace
    #$TargetResourceGroupName = $SQLPool.ResourceGroupName # for restoring to different workspace in same resourcegroup 
    #$RestoredDatabase = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $PointInTime -ResourceGroupName $TargetResourceGroupName `
    #    -WorkspaceName $TargetWorkspaceName -TargetSqlPoolName $NewSQLPoolName –ResourceId $DatabaseID -PerformanceLevel DW100c
    
    # Verify the status of restored database
    $RestoredDatabase.status
    

PowerShell kullanarak ayrılmış SQL havuzunu farklı bir aboneliğe geri yükleme

Abonelikler arası geri yükleme gerçekleştirirken, Azure Synapse çalışma alanında ayrılmış bir SQL havuzu yalnızca doğrudan tek başına ayrılmış SQL havuzuna (eski adı SQL DW) geri yüklenebilir. Azure Synapse çalışma alanında ayrılmış bir SQL havuzunu hedef abonelikteki bir çalışma alanına geri yüklemek gerekiyorsa, ek bir geri yükleme adımı gerekir.

Aşağıdaki PowerShell örneği öncekine benzer, ancak üç ana fark vardır:

  • Geri yüklenecek SQL Havuzu nesnesi alındıktan sonra abonelik bağlamı hedef (veya hedef) abonelik adına geçirilmelidir.
  • Geri yüklemeyi gerçekleştirirken Az.Synapse modülleri yerine Az.Sql modüllerini kullanın.
  • Aşağıdaki örnek kod, hedef abonelikteki bir Azure Synapse çalışma alanına geri yüklemek için ek adımlar içerir. Örnekte açıklandığı gibi PowerShell komutlarının açıklamasını kaldırın.

Adımlar:

  1. Bir PowerShell terminali açın.

  2. kullanan eski bir sürümdeyse Az.Sql Modülünü 3.8.0 (veya üzeri) olarak Update-Modulegüncelleştirin. Aksi takdirde hatalara neden olur. PowerShell aracılığıyla sürümünüzü doğrulamak için:

    foreach ($i in (get-module -ListAvailable | ?{$_.name -eq 'az.sql'}).Version) { $version = [string]$i.Major + "." + [string]$i.Minor; if ($version -gt 3.7) {write-host "Az.Sql version $version installed. Prequisite met."} else {update-module az.sql} }
    
  3. Azure hesabınıza Bağlan ve hesabınızla ilişkili tüm abonelikleri listeleyin.

  4. Geri yüklenecek SQL havuzunu içeren aboneliği seçin.

  5. Ayrılmış SQL havuzu için geri yükleme noktalarını listeleyin.

  6. RestorePointCreationDate kullanarak istediğiniz geri yükleme noktasını seçin.

  7. SQL havuzunun geri yüklenmesi gereken hedef aboneliği seçin.

  8. Restore-AzSqlDatabase PowerShell cmdlet'ini kullanarak ayrılmış SQL havuzunu istediğiniz geri yükleme noktasına geri yükleyin.

  9. Geri yüklenen ayrılmış SQL havuzunun (eski adı SQL DW) çevrimiçi olduğunu doğrulayın.

  10. İstenen hedef bir Synapse Çalışma Alanı ise, ek geri yükleme adımını gerçekleştirmek için kodun açıklamasını kaldırın.

    1. Yeni oluşturulan veri ambarı için geri yükleme noktası oluşturun.

    2. Söz dizimini kullanarak Select -Last 1 oluşturulan son geri yükleme noktasını alın.

    3. İstediğiniz Azure Synapse çalışma alanına geri yüklemeyi gerçekleştirin.

      $SourceSubscriptionName="<YourSubscriptionName>"
      $SourceResourceGroupName="<YourResourceGroupName>"
      $SourceWorkspaceName="<YourServerNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
      $SourceSQLPoolName="<YourDatabaseName>"
      $TargetSubscriptionName="<YourTargetSubscriptionName>"
      $TargetResourceGroupName="<YourTargetResourceGroupName>"
      $TargetServerName="<YourTargetServerNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
      $TargetDatabaseName="<YourDatabaseName>"
      #$TargetWorkspaceName="<YourTargetWorkspaceName>" # uncomment if restore to an Azure Synapse workspace is required
      
      # Update Az.Sql module to the latest version (3.8.0 or above)
      # Update-Module -Name Az.Sql -RequiredVersion 3.8.0
      
      Connect-AzAccount
      Get-AzSubscription
      Select-AzSubscription -SubscriptionName $SourceSubscriptionName
      
      # list all restore points
      Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $SourceResourceGroupName -WorkspaceName $SourceWorkspaceName -Name $SourceSQLPoolName
      # Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
      $PointInTime="<RestorePointCreationDate>"
      
      # Get the specific SQL pool to restore
      $SQLPool = Get-AzSynapseSqlPool -ResourceGroupName $SourceResourceGroupName -WorkspaceName $SourceWorkspaceName -Name $SourceSQLPoolName
      # Transform Synapse SQL pool resource ID to SQL database ID because currently the restore command only accepts the SQL database ID format.
      $DatabaseID = $SQLPool.Id -replace "Microsoft.Synapse", "Microsoft.Sql" `
          -replace "workspaces", "servers" `
          -replace "sqlPools", "databases"
      
      # Switch context to the destination subscription
      Select-AzSubscription -SubscriptionName $TargetSubscriptionName
      
      # Restore database from a desired restore point of the source database to the target server in the desired subscription
      $RestoredDatabase = Restore-AzSqlDatabase –FromPointInTimeBackup –PointInTime $PointInTime -ResourceGroupName $TargetResourceGroupName `
          -ServerName $TargetServerName -TargetDatabaseName $TargetDatabaseName –ResourceId $DatabaseID
      
      # Verify the status of restored database
      $RestoredDatabase.status
      
      # uncomment below cmdlets to perform one more restore to push the SQL Pool to an existing workspace in the destination subscription
      # # Create restore point
      # New-AzSqlDatabaseRestorePoint -ResourceGroupName $RestoredDatabase.ResourceGroupName -ServerName $RestoredDatabase.ServerName `
      #     -DatabaseName $RestoredDatabase.DatabaseName -RestorePointLabel "UD-001"
      # # Gets the last restore point of the sql dw (will use the RestorePointCreationDate property)
      # $RestorePoint = Get-AzSqlDatabaseRestorePoint -ResourceGroupName $RestoredDatabase.ResourceGroupName -ServerName $RestoredDatabase.ServerName `
      #     -DatabaseName $RestoredDatabase.DatabaseName | Select -Last 1
      # # Restore to destination synapse workspace
      # $FinalRestore = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $RestorePoint.RestorePointCreationDate -ResourceGroupName $TargetResourceGroupName `
      #     -WorkspaceName $TargetWorkspaceName -TargetSqlPoolName $TargetDatabaseName –ResourceId $RestoredDatabase.ResourceID -PerformanceLevel DW100c
      
      

Sorun giderme

Geri yükleme işlemi , "RequestTimeout" özel durumuna bağlı olarak dağıtım hatasına neden olabilir.

Screenshot from resource group deployments dialog of a timeout exception.

Bu zaman aşımı yoksayılabilir. Azure portalında ayrılmış SQL havuzu sayfasını gözden geçirin; "Geri Yükleme" durumunda olabilir ve sonunda "Çevrimiçi" durumuna geçer.

Screenshot of SQL pool dialog with the status that shows restoring.