Reverse Migration of SQL Database from Hyperscale to General Purpose

Nalini Bhavaraju 100 Reputation points
2025-07-02T14:58:24.07+00:00

A reverse migration of a SQL database from Hyperscale to General Purpose is needed, but it has been more than 45 days since the database was moved. There is uncertainty regarding the 45-day timeline for migrations.

Is there a way to migrate the database back to General Purpose? The database has several services associated with it, along with user-defined views and tables, and it is important to retain the original database name.

Could anyone provide the steps or options available to retain the database name, settings, and data along with the steps for migration to a General Purpose Database even after 45 days.

Azure SQL Database
0 comments No comments
{count} votes

Accepted answer
  1. Amira Bedhiafi 34,966 Reputation points Volunteer Moderator
    2025-07-02T19:27:22.1833333+00:00

    Hello Nalini !

    Thank you for posting on Microsoft Learn.

    Unfortunately, Azure SQL Database does not support direct reverse migration from Hyperscale to General Purpose once the 45-day rollback window has passed. After this period, the internal backups needed for point-in-time restore to the original architecture are purged, making direct rollback impossible.

    However, you can still manually migrate your database from Hyperscale to General Purpose, retaining the name, schema, and data.

    You can export BACPAC from Hyperscale using Azure Portal, SSMS, or PowerShell:

    New-AzSqlDatabaseExport `
      -ResourceGroupName <ResourceGroup> `
      -ServerName <ServerName> `
      -DatabaseName <HyperscaleDB> `
      -StorageKeyType StorageAccessKey `
      -StorageKey <Key> `
      -StorageUri <BlobSasUrl>
    

    Then create a General Purpose tier database in the same region, possibly with a temporary name and next import BACPAC to General Purpose using Azure Portal, SSMS, or PowerShell again:

    New-AzSqlDatabaseImport `
      -ResourceGroupName <ResourceGroup> `
      -ServerName <ServerName> `
      -DatabaseName <NewGeneralPurposeDB> `
      -StorageKeyType StorageAccessKey `
      -StorageKey <Key> `
      -StorageUri <BlobSasUrl>
    

    Once data is fully imported and validated, delete or rename the existing Hyperscale DB, then rename General Purpose DB to the original name.

    ALTER DATABASE [NewGeneralPurposeDB] MODIFY NAME = [OriginalDBName];
    

    Or you can restore via PowerShell (if using .bacpac with name preserved) where you can specify the original name directly at import if the Hyperscale DB is removed.


1 additional answer

Sort by: Most helpful
  1. Deleted

    This answer has been deleted due to a violation of our Code of Conduct. The answer was manually reported or identified through automated detection before action was taken. Please refer to our Code of Conduct for more information.


    Comments have been turned off. Learn more

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.