
Azure SQL offers two pricing models: DTU (Database Transaction Unit) and vCore. DTU is a more traditional pricing model that's based on the number of database transactions, storage, and memory usage.
The vCore pricing model, on the other hand, is a more flexible and scalable option that allows you to pay for the exact resources your database needs.
In this guide, we'll explore the differences between Azure SQL DTU and vCore, including pricing and migration considerations.
To determine which pricing model is right for you, let's start by comparing the costs of running a database under DTU and vCore.
Azure SQL Pricing
Azure SQL Pricing can be a bit overwhelming, but it's actually quite straightforward once you understand the basics. There are two pricing models to choose from: the Database Transaction Unit (DTU) model and the vCore model. You can use the DTU calculator to determine how many DTUs your database requires.
Each instance type or pool size offers a certain number of DTUs, representing processing capacity, and a certain amount of storage. You can view the costs associated with each service tier in the DTU model.
In the vCore model, you pay separately for the storage used, and you can see pricing details for logical cores and memory used. This model allows you to pay for compute resources and storage separately.
To get an estimate on the pricing estimate for Azure SQL DB, you can use the DTU or vCore purchase model options. These options allow you to explore pricing options using various combinations.
Here's a quick rundown of the steps to migrate your database from DTU to vCore:
- Create a sample Azure SQL DB in the Basic tier
- Migrate the database to the vCore based purchasing model by using the Azure portal
- Revert the database to the basic tier
- Migrate the database to the vCore based purchasing model by using T-SQL
- Revert the database to the basic tier
Compute Options
In Azure SQL, you have three compute options to choose from: DTU, Serverless Compute, and Provisioned Compute.
The DTU model offers preconfigured bundles of compute resources and included storage, and you're billed by the number of DTUs you allocate to your database.
The Serverless Compute option allows you to dynamically select between 0.5 and 16 vCores, with between 2.02 GB and 48 GB of memory, and costs $0.5218 per vCore hour and $0.115 per GB-month.
The Provisioned Compute option requires you to select a number of vCores and your capacity and prices are determined accordingly, with prices ranging from $0.5044 to $20.1747 per hour for a Single Database deployment in the West US 2 region.
Here are the vCore prices for Azure SQL using the General Purpose/Standard service tier, for a Single Database deployment, in the West US 2 region:
Provisioned Compute Option
The provisioned compute option is a flexible way to choose the compute resources you need for your Azure SQL Database. You can select a number of vCores and your costs will be determined accordingly.
There are two pricing options for vCores: a regular price that includes the Microsoft software license, and a lower price for Azure Hybrid Benefit, which offers a 40% discount if you transfer your existing SQL Server licenses to your vCores.
The regular vCore price varies depending on the number of vCores and the total memory. For example, in the West US 2 region, the price per hour for 2 vCores is $0.5044, while for 4 vCores it's $1.0088.
Here's a breakdown of the vCore pricing for Azure SQL using the General Purpose/Standard service tier, for a Single Database deployment, in the West US 2 region:
Note that these prices only cover compute costs, and you'll also be charged separately for storage using the Premium tier of the Azure Blob Storage service, at a cost of $0.115 per GB/month.
Serverless Compute Option
If you choose serverless compute, you can dynamically select between 0.5 and 16 vCores, with between 2.02 GB and 48 GB of memory.
The price is $0.5218 per vCore hour and $0.115 per GB-month.
You'll also need to consider the cost of backup storage if you need point-in-time restore, which is $0.20 per GB-month.
For long-term retention, you'll pay $0.05 per GB-month.
Here's a breakdown of the costs:
Service Tiers
Azure SQL has three deployment models: Single Database, Elastic Pool, and Managed Instance. Each of these models serves a specific purpose and offers unique benefits.
The Single Database model is a fully managed database used by an organization. It's a straightforward and easy-to-use option.
Elastic Pool, on the other hand, is a group of Azure SQL Single Databases with a shared set of resources. This model is ideal for organizations with multiple databases that require similar resources.
Managed Instance is a fully managed Microsoft SQL Server Database Engine running in Azure. It's designed for organizations that want to migrate their on-premises SQL Server databases to the cloud.
There are three service tiers: General Purpose/Standard, Business Critical/Premium, and Hyperscale. Each tier is designed for specific workloads and performance requirements.
The General Purpose/Standard tier is suitable for common workloads. It's a great starting point for most organizations.
The Business Critical/Premium tier is designed for high-throughput OLTP applications that require low latency and high resilience. It's perfect for organizations that need high-performance databases.
Hyperscale is ideal for very large OLTP systems. It performs auto-scaling of storage and compute, making it a great option for organizations with massive data sets.
Here's a summary of the service tiers:
To choose the right service tier, consider your organization's specific needs and requirements. By selecting the right tier, you can ensure optimal performance and cost-effectiveness for your Azure SQL databases.
Migration and Costs
Migration to the vCore-based purchasing model can be done using the Azure portal, PowerShell, the Azure CLI, and Transact-SQL. You can migrate your database to a different purchasing model by selecting a new service tier in the Azure portal.
The vCore-based purchasing model offers greater transparency in resource selection and the serverless option, which is not available in the DTU model. You may also want to migrate to take advantage of additional savings offered by the vCore model.
To give you a better idea of the costs involved, here's a summary of the pricing tiers:
Note that the cost of backup storage is the same for both the Business Critical and General Purpose service tiers.
Reducing Costs
The DTU model can be inflexible, but you can reduce costs by migrating to the vCore model, which offers serverless compute and greater transparency in resource selection.
One reason to migrate is to standardize your purchasing model across all Azure SQL databases, making it easier to manage and optimize costs.
Serverless compute in the vCore model can lead to significant cost savings, especially for databases with variable workloads.
The vCore model also offers additional savings through thin provisioning, data compression, and deduplication, which can reduce storage costs by up to 70%.
Here are some examples of cost savings with the vCore model:
Additionally, long-term retention of data using RA-GRS blob storage can increase costs, but the vCore model can help mitigate these costs through efficient storage management.
Use to Migrate
To migrate from the DTU-based purchasing model to the vCore-based purchasing model, you can use a few different methods. The process is similar to scaling between service objectives in the Basic, Standard, and Premium service tiers.
You can migrate your database to a different purchasing model by using the Azure portal, PowerShell, the Azure CLI, or Transact-SQL. These methods allow you to switch between the two models without having to start over.
The Azure portal provides a straightforward way to migrate your database. Simply go to your SQL database, select Compute + storage under Settings, and use the dropdown list under Service tier to select a new purchasing model and service tier.
Alternatively, you can use PowerShell, the Azure CLI, or Transact-SQL to migrate your database. These methods offer more flexibility and can be used in a variety of scenarios.
Here are the tools you can use to migrate your database:
- Azure portal
- PowerShell
- Azure CLI
- Transact-SQL
Note that database copy can also be used to migrate from DTU to vCore. This method creates a transactionally consistent snapshot of the data at a point in time after the copy operation starts.
Cost Examples and Demystification
In the DTU pricing model, you're billed by the number of DTUs you allocate to your database, with prices ranging from $0.0202 to $6.0488 per DTU, depending on the instance type.
The vCore pricing model, on the other hand, offers more flexibility, with prices determined by the number of vCores and total memory selected. For example, in the General Purpose/Standard service tier, 2 vCores cost $0.5044 per hour, including the Microsoft software license.
To give you a better idea of the costs involved, here's a comparison of DTU and vCore pricing for different instance types:
Note that these prices are for a Single Database deployment in the West US 2 region. Additional data charges apply for storage beyond the included storage, at a cost of $0.17 per GB-month.
Cost Examples
Azure SQL Database pricing can be complex, but understanding the different cost models can help you make informed decisions.
DTU pricing is based on the number of database transaction units (DTUs) allocated to your database, with prices ranging from $0.0202 to $3.2260 per DTU, depending on the instance type.

The General Purpose/Standard service tier offers a range of instance types, from S0 to S12, each with a specific number of DTUs and maximum storage allowance.
Here's a breakdown of the prices for the General Purpose/Standard service tier:
In addition to DTU pricing, you'll also be charged for extra data storage beyond the included storage, at a rate of $0.17 per GB-month.
vCore pricing, on the other hand, offers more flexibility, with prices ranging from $0.5044 to $20.1747 per hour, depending on the number of vCores and total memory.
Here's a breakdown of the prices for the General Purpose/Standard service tier:
Demystifying Options
Migrating to a vCore service objective can be a bit tricky, but let's break it down. The DTU standard database has 24 logical CPUs (vCores), with 5.4 GB of memory per vCore, which matches a General Purpose 2 vCore database on standard-series hardware.
You can choose from various vCore service objectives, each with its own pricing. In the provisioned compute option, you need to select a number of vCores, and your capacity and prices are determined accordingly.

The prices for vCores vary depending on the number of cores and the region. For example, in the West US 2 region, a 2 vCore database costs $0.5044 per hour including license.
Here's a table showing vCore pricing for Azure SQL in the General Purpose/Standard service tier, for a Single Database deployment, in the West US 2 region:
You're also charged separately for storage, using the Premium tier of the Azure Blob Storage service, at a cost of $0.115 per GB/month.
Migration and Creation
Migrating from Azure SQL DTU to vCore is a straightforward process. You can use the Azure portal, PowerShell, Azure CLI, or Transact-SQL to make the change.
To migrate using the Azure portal, go to your SQL database in the Azure portal, select Compute + storage under Settings, and use the dropdown list under Service tier to select a new purchasing model and service tier. This will trigger the change to migrate to vCore purchasing model.
Migrating using PowerShell or Azure CLI involves using commands like `Set-AzSqlDatabase` or `az sql db update`, respectively. You can find sample commands in the relevant documentation.
You can also use database copy to migrate from DTU to vCore using PowerShell, the Azure CLI, or Transact-SQL. This method creates a transactionally consistent snapshot of the data at a point in time after the copy operation starts.
Here's a summary of the migration methods:
Mapping
Mapping is a crucial step in the migration process. You'll need to determine the equivalent number of vCores for your DTU database or elastic pool.
To do this, you can execute a specific Transact-SQL query in the context of the database to be migrated. This query returns a matching number of vCores in each hardware configuration in the vCore model.
The query is designed to be executed in the context of the database, rather than in the master database. When migrating an elastic pool, execute the query in the context of any database in the pool.
The result of the query will give you a fractional number of vCores, which can be rounded off to the closest number of vCores available for databases and elastic pools in each hardware configuration.
For example, if the query returns a result of 42.00 vCores, you can round this down to 42 vCores, which is a good match for the BC_Gen5_40 service objective.
Here's a summary of the vCore service objectives mentioned in the article examples:
Keep in mind that the Hyperscale service tier requires geo-replication to be temporarily removed before migration.
Reasons to Migrate
You may want to migrate from DTU to vCore based purchasing model for several reasons. One key advantage is that it allows you to standardize your purchasing model across all your Azure SQL databases.
You can also gain greater transparency in the way you select your Azure SQL DB resources, which can be beneficial for cost management and planning.

The vCore based model also offers the serverless option, which is not available in the DTU based model. This can be a game-changer for applications with variable workloads.
By switching to the vCore based model, you can also take advantage of additional savings. This can be a significant factor for businesses looking to reduce costs.
Additionally, if you're performing a new migration from on-premises servers, the vCore based model may be a more suitable option. It's also worth noting that Microsoft recommends aligning your Azure SQL DB configuration with the vCore based model.
Here are some of the reasons you may want to migrate to the vCore based model:
- Standardize purchasing model across all your Azure SQL databases
- Gain greater transparency in the way you select your Azure SQL DB resources
- Use the serverless option
- Take advantage of additional savings
- Align with Microsoft recommendations
- Perform a new migration from on-premises servers
Steps to Migrate to T-SQL
To migrate your Azure SQL database from the DTU to vCore model using T-SQL, you can run a specific command on the database. This will trigger the change to migrate to the vCore purchasing model, which will complete in a few minutes.
You can check the status by clicking on the 'Overview' option on the Azure portal. Once the status changes, you can run another command to check the service tier details and validate that the change has completed as expected.
The output will show that the Azure SQL DB is migrated to the vCore purchasing model, with the 'General Purpose' pricing tier and using GP_Gen5_2, which stands for General purpose using Gen 5 hardware with 2 vCores.
Here are the steps to migrate your Azure SQL database from the DTU to vCore model using T-SQL:
1. Run the command to trigger the change to vCore purchasing model.
2. Check the status by clicking on the 'Overview' option on the Azure portal.
3. Run another command to check the service tier details and validate the change.
Note that you cannot migrate a database from the Hyperscale service tier back to any other service tier.
Create Secondary
Creating a secondary database can be a great way to enhance your data management strategy. You can create a geo-replication secondary database only by using the same service tier as your primary database.
This means you need to match the service tier of your primary database when creating a geo-secondary. If your primary database has a high log-generation rate, consider creating the geo-secondary with the same compute size to ensure optimal performance.
If you're creating a geo-secondary in the same elastic pool as your primary database, make sure the maxVCore setting for the pool matches the primary database's compute size. This ensures seamless integration and performance.
If you're creating a geo-secondary in a different elastic pool, we recommend that the pools have the same maxVCore settings. This will help maintain consistency and prevent potential issues.
Frequently Asked Questions
How many DTUs is 1 vCore?
For every vCore, you can estimate approximately 125 DTUs in the Premium tier, and 100 DTUs in the Basic or Standard tiers. This rule of thumb helps estimate DTUs based on vCore requirements.
How do you convert DTU to vCore?
To convert DTU to vCore, simply divide the DTU value by 100, where 100 DTU equals 1 vCore. For example, 50 DTU is equivalent to 0.5 vCore.
Sources
- https://learn.microsoft.com/en-us/azure/azure-sql/database/purchasing-models
- https://bluexp.netapp.com/blog/azure-cvo-blg-azure-sql-pricing-simplified
- https://www.mssqltips.com/sqlservertip/7000/azure-sql-db-purchasing-model-dtu-vcore/
- https://learn.microsoft.com/en-us/azure/azure-sql/database/migrate-dtu-to-vcore
- https://medium.com/@raduvunvulea/demystifying-azure-sql-dtus-and-vcore-78d65d4e15c5
Featured Images: pexels.com