استعادة تجمع SQL مخصص موجود

في هذه المقالة، ستتعرف على كيفية استعادة تجمع SQL مخصص موجود في Azure Synapse Analytics باستخدام مدخل Microsoft Azure وSynapse Studio وPowerShell. تنطبق هذه المقالة على كل من عمليات الاستعادة والاستعادة الجغرافية.

إشعار

هذا التوجيه مخصص لتجمعات SQL المخصصة في مساحات عمل Azure Synapse فقط. بالنسبة إلى تجمعات SQL المخصصة المستقلة (المعروفة سابقا ب SQL DW)، راجع استعادة تجمع SQL مخصص موجود (المعروف سابقا ب SQL DW).

قم باستعادة مجموعة SQL المخصصة الموجودة من خلال Synapse Studio

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى مساحة عمل Azure Synapse.

  3. ضمن الشروع في العمل ->افتح استوديو Synapse حددفتح. لقطة شاشة من Synapse Studio، تعرض مربع Open Synapse Studio ورابط Open.

  4. في جزء التنقل الأيسر، حدد Data.

  5. حدد Manage pools.

  6. حدد + جديد لإنشاء تجمع SQL مخصص جديد في مساحة عمل تحليلات Azure Synapse.

  7. في علامة التبويب الإعدادات الإضافية، حدد نقطة استعادة للاستعادة منها.

    إذا كنت تريد إجراء استعادة جغرافية، فحدد مساحة العمل ومجموعة SQL المخصصة التي تريد استعادتها.

  8. حدد إما نقاط الاستعادة التلقائية أو نقاط الاستعادة المحددة من قِبل المستخدم.

    لقطة شاشة من مدخل Microsoft Azure، صفحة إنشاء تجمع SQL، صفحة إعدادات إضافية. بالنسبة إلى نوع نقطة الاستعادة، يتم تحديد الزر التبادلي لنقاط الاستعادة التلقائية.

    • إذا لم يكن لدى تجمع SQL المخصص أي نقاط استعادة تلقائية، فانتظر بضع ساعات أو قم بإنشاء نقطة استعادة يحددها المستخدم قبل الاستعادة. بالنسبة لنقاط الاستعادة المحددة من قبل المستخدم، حدد واحدة موجودة أو أنشئ واحدة جديدة.

    • إذا كنت ترغب في استعادة تجمع SQL مخصص من مساحة عمل مختلفة، فحدد تجمع SQL مخصص جديد من مساحة العمل الحالية. ضمن علامة التبويب إعدادات إضافية، ابحث عن الخيار استخدام البيانات الموجودة وحدد الخيار نقطة الاستعادة. كما هو موضح في لقطة الشاشة أعلاه، يمكنك بعد ذلك تحديد اسم الخادم أو مساحة العمل التي يمكنك الاستعادة منها.

    • إذا كنت تقوم باستعادة نسخة احتياطية جغرافية، فحدد مساحة العمل الموجودة في منطقة المصدر ومجموعة SQL المخصصة التي تريد استعادتها.

    إشعار

    لا يمكنك إجراء استعادة موضعية لتجمع SQL بنفس اسم تجمع موجود. بغض النظر عن وجود تجمع SQL في نفس مساحة العمل أو مساحة عمل مختلفة.

  9. حدد "استعراض + إنشاء".

قم باستعادة تجمع SQL مخصص موجود من خلال مدخل Microsoft Azure

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى تجمع SQL المخصص الذي تريد الاستعادة منه.

  3. في الجزء العلوي من صفحة نظرة عامة، حدد "Restore".

    لقطة شاشة من مدخل Microsoft Azure، تعرض صفحة نظرة عامة على تجمع SQL. يتم تمييز الزر استعادة.

  4. حدد إما نقاط الاستعادة التلقائية أو نقاط الاستعادة المحددة من قِبل المستخدم.

    إذا لم يكن لدى تجمع SQL المخصص أي نقاط استعادة تلقائية، فانتظر بضع ساعات أو قم بإنشاء نقطة استعادة محددة بواسطة المستخدم قبل الاستعادة.

    إذا كنت تريد إجراء استعادة جغرافية، فحدد مساحة العمل ومجموعة SQL المخصصة التي تريد استعادتها.

  5. حدد "استعراض + إنشاء".

قم باستعادة تجمع SQL مخصص موجود من خلال PowerShell

  1. افتح PowerShell terminal.

  2. اتصل بحساب Azure الخاص بك وقم بسرد جميع الاشتراكات المرتبطة بحسابك.

  3. حدد الاشتراك الذي يحتوي على تجمع SQL المراد استعادته.

  4. سرد نقاط الاستعادة لتجمع SQL المخصص.

  5. اختر نقطة الاستعادة المطلوبة باستخدام RestorePointCreationDate.

  6. قم باستعادة تجمع SQL المخصص إلى نقطة الاستعادة المطلوبة باستخدام Restore-AzSynapseSqlPool PowerShell cmdlet.

  7. تحقق من أن تجمع SQL المخصص المستعاد متصل بالإنترنت.

    
    $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
    

قم باستعادة تجمع SQL مخصص موجود إلى اشتراك مختلف من خلال PowerShell

عند إجراء استعادة عبر الاشتراكات، يمكن لمجمع SQL مخصص في مساحة عمل Azure Synapse الاستعادة مباشرةً إلى مجموعة SQL المخصصة المستقلة (المعروفة سابقًا باسم SQL DW). إذا كانت هناك حاجة لاستعادة تجمع SQL مخصص في مساحة عمل Azure Synapse إلى مساحة عمل في الاشتراك الوجهة، فسيلزم خطوة استعادة إضافية.

مثال PowerShell التالي مشابه للمثال السابق، ولكن هناك ثلاثة اختلافات رئيسية:

  • بعد استرداد عنصر SQL Pool المراد استعادته، يحتاج سياق الاشتراك إلى التبديل إلى اسم الاشتراك الوجهة (أو الهدف).
  • عند إجراء الاستعادة، استخدم وحدات Az.Sql النمطية بدلاً من وحدات Az.Synapse النمطية.
  • يحتوي نموذج التعليمات البرمجية أدناه على خطوات إضافية للاستعادة إلى مساحة عمل Azure Synapse في اشتراك الوجهة. إلغاء تعليق أوامر PowerShell كما هو موضح في العينة.

الخطوات:

  1. افتح PowerShell terminal.

  2. تحديث وحدة Az.Sql النمطية إلى 3.8.0 (أو أحدث) إذا كان على إصدار أقدم باستخدام Update-Module. وإلا فإنه سيؤدي إلى فشل. للتحقق من صحة الإصدار الخاص بك عبر PowerShell:

    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 الخاص بك وقم بسرد جميع الاشتراكات المرتبطة بحسابك.

  4. حدد الاشتراك الذي يحتوي على تجمع SQL المراد استعادته.

  5. سرد نقاط الاستعادة لتجمع SQL المخصص.

  6. اختر نقطة الاستعادة المطلوبة باستخدام RestorePointCreationDate.

  7. حدد الاشتراك الوجهة الذي يجب استعادة تجمع SQL فيه.

  8. قم باستعادة تجمع SQL المخصص إلى نقطة الاستعادة المطلوبة باستخدام Restore-AzSqlDatabase PowerShell cmdlet.

  9. تحقق من أن تجمع SQL المخصص المستعاد (المعروف سابقاً باسم SQL DW) متصل بالإنترنت.

  10. إذا كانت الوجهة المطلوبة هي مساحة عمل Synapse، فقم بإلغاء التعليق على التعليمة البرمجية لتنفيذ خطوة الاستعادة الإضافية.

    1. قم بإنشاء نقطة استعادة لمستودع البيانات الذي تم إنشاؤه حديثاً.

    2. استرجع آخر نقطة استعادة تم إنشاؤها باستخدام بناء الجملة Select -Last 1.

    3. قم بإجراء استعادة مساحة عمل Azure Synapse المطلوبة.

      $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
      
      

استكشاف الأخطاء وإصلاحها

يمكن أن تؤدي عملية الاستعادة إلى فشل التوزيع بناءً على استثناء "RequestTimeout".

لقطة شاشة من مربع حوار عمليات توزيع مجموعة الموارد لاستثناء انتهاء المهلة.

يمكن تجاهل هذه المهلة. راجع صفحة تجمع SQL المخصصة في مدخل Microsoft Azure وقد لا تزال لديها حالة "استعادة" وفي النهاية سيتم الانتقال إلى "عبر الإنترنت".

لقطة شاشة لمربع حوار SQL مع الحالة التي تظهر الاستعادة.