Skip to content

Commit afc7976

Browse files
Merge pull request #34808 from MicrosoftDocs/main
Auto Publish – main to live - 2025-07-25 22:30 UTC
2 parents 564ea3a + a682bf1 commit afc7976

25 files changed

+580
-300
lines changed

azure-sql/azure-sql-iaas-vs-paas-what-is-overview.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,4 +190,3 @@ For pricing:
190190

191191
To migrate:
192192
- [Migrate to Azure SQL](migration-guides/index.yml)
193-
- [Identify the right SKU for your on-premises database](/sql/dma/dma-sku-recommend-sql-db/)

azure-sql/database/always-encrypted-with-secure-enclaves-landing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ landingContent:
120120
- text: Inside Azure Datacenter Architecture with Mark Russinovich
121121
url: https://youtu.be/69PrhWQorEM?t=4523
122122
- text: A webinar including a section on secure enclaves
123-
url: https://info.microsoft.com/ww-ondemand-azure-webinar-series-four-ways-to-take-your-data-security-to-the-next-level.html
123+
url: https://info.microsoft.com/en-us-ondemand-SimplifyandautomateresearchcomplianceresponsibilitieswithAzure-none.html
124124

125125
# Card
126126
- title: Query columns
Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
---
2+
title: Enable zone redundancy for Azure SQL Database
3+
description: Learn how to update your Azure SQL Database to enable availability zone support.
4+
author: WilliamDAssafMSFT
5+
ms.author: wiassaf
6+
ms.reviewer: anaharris, rsetlem, mathoma
7+
ms.date: 07/25/2025
8+
ms.service: azure-sql-database
9+
ms.subservice: high-availability
10+
ms.topic: upgrade-and-migration-article
11+
ms.custom:
12+
- subject-reliability
13+
monikerRange: "=azuresql || =azuresql-db"
14+
---
15+
# Enable zone redundancy for Azure SQL Database
16+
17+
[!INCLUDE [appliesto-sqldb](../includes/appliesto-sqldb.md)]
18+
19+
This guide describes how to update your Azure SQL Database for zone redundancy with [availability zones](/azure/reliability/availability-zones-overview).
20+
21+
Enabling zone redundancy for Azure SQL Database guarantees high availability, making your databases and elastic pools resilient to a larger set of failures, such as catastrophic datacenter outages, without any changes of the application logic. When zone redundancy is enabled, your database utilizes availability zones to replicate data across multiple physical locations within a single Azure region.
22+
23+
24+
## Prerequisites
25+
26+
Before you enable availability zone support, ensure that your Azure SQL Database is in a supported service tier and deployment model. Make sure that your tier and model is offered in a [region that supports availability zones](/azure/reliability/regions-list).
27+
28+
| Service tier | Deployment model | Zone redundancy availability |
29+
|-----|------|------|
30+
| Premium | Single database or Elastic Pool | [All regions that support availability zones](/azure/reliability/regions-list)|
31+
| Business Critical | Single database or Elastic Pool | [All regions that support availability zones](/azure/reliability/regions-list) |
32+
| General Purpose | Single database or Elastic Pool | [Selected regions that support availability zones](high-availability-sla.md?view=azuresql-db&preserve-view=true#general-purpose-service-tier-zone-redundant-availability)|
33+
| Hyperscale | Single database | [All regions that support availability zones](/azure/reliability/regions-list) |
34+
35+
## Downtime requirements
36+
37+
Enabling zone redunancy for Premium, Business Critical, and General Purpose service tier is an online operation with a brief disconnect. If you have implemented [retry logic for standard transient errors](troubleshoot-common-connectivity-issues.md?view=azuresql-db&preserve-view=true#retry-logic-for-transient-errors), you won't notice the failover.
38+
39+
For Hyperscale service tier, zone redundancy support can only be specified during database creation and can't be modified once the resource is provisioned. If you wish to move to availability zone support, you'll need to transfer the data with database copy, point-in-time restore, or geo-replica. If the target database is in a different region than the source or if the database backup storage redundancy for the target differs from the source database, then downtime is proportional to the size of the data operation.
40+
41+
<a id="migration"></a>
42+
43+
## Enable zone redundancy (Premium, Business Critical, and General Purpose)
44+
45+
For the Premium, Business Critical, and General Purpose service tiers, enabling zone redundancy is possible.
46+
47+
Follow these steps to enable zone redundancy for a single database or an elastic pool.
48+
49+
<a id="migrate-a-single-database"></a>
50+
51+
### Enable zone redundancy for a single database
52+
53+
# [Azure portal](#tab/portal)
54+
55+
1. Go to the [Azure portal](https://portal.azure.com) to find your database. Search for and select **SQL databases**.
56+
57+
1. Select the desired database.
58+
59+
1. Under **Settings** select **Compute + Storage**.
60+
61+
1. Select **Yes** for **Would you like to make this database zone redundant?**
62+
63+
1. Select **Apply**.
64+
65+
1. Wait to receive an operation completion notice in **Notifications** in the top menu of the Azure portal.
66+
67+
1. To verify that zone redundancy is enabled, select **Overview** and then select **Properties**.
68+
69+
1. Under the **Availability** section, confirm that zone redundancy is set to **Enabled**.
70+
71+
# [PowerShell](#tab/powershell)
72+
73+
Open PowerShell as Administrator and run the following command (replace the placeholders in `<>` with your resource names). The `<server_name>` should not include `.database.windows.net`.
74+
75+
```powershell
76+
Connect-AzAccount
77+
$subscriptionid = <'your subscription id here'>
78+
Set-AzContext -SubscriptionId $subscriptionid
79+
80+
$parameters = @{
81+
ResourceGroupName = '<Resource_Group_Name>'
82+
ServerName = '<Server_Name>'
83+
DatabaseName = '<Database_Name>'
84+
}
85+
Set-AzSqlDatabase @parameters -ZoneRedundant
86+
```
87+
88+
# [Azure CLI](#tab/cli)
89+
90+
Use Azure CLI to run the following command (replace the placeholders in `<>` with your resource names):
91+
92+
```azurecli
93+
az sql db update --resource-group "<Resource_Group_Name>" --server "<Server_Name>" --name "<Database_Name>" --zone-redundant
94+
```
95+
96+
# [REST API](#tab/API)
97+
98+
To enable zone redundancy, see [Databases - Create Or Update API](/rest/api/sql/2022-05-01-preview/databases/create-or-update?tabs=HTTP) and use the `properties.zoneRedundant` property.
99+
100+
---
101+
102+
<a id="migrate-an-elastic-pool"></a>
103+
104+
### Enable zone redundancy for an elastic pool
105+
106+
> [!IMPORTANT]
107+
> Enabling zone redundancy support for elastic pools makes all databases within the pool zone redundant.
108+
109+
# [Azure portal](#tab/portal)
110+
111+
1. Go to the [Azure portal](https://portal.azure.com) to find and select the desired elastic pool.
112+
113+
1. Under **Settings**, select **Compute + Storage**.
114+
115+
1. Select **Yes** for **Would you like to make this elastic pool zone redundant?**.
116+
117+
1. Select **Save**.
118+
119+
1. Wait to receive an operation completion notice in **Notifications** in the top menu of the Azure portal.
120+
121+
1. To verify that zone redundancy is enabled, select **Configure** and then select **Pool settings**.
122+
123+
1. The zone redundant option should be set to **Yes**.
124+
125+
# [PowerShell](#tab/powershell)
126+
127+
Open PowerShell as Administrator and run the following command (replace the placeholders in `<>` with your resource names). The `<server_name>` should not include `.database.windows.net`.
128+
129+
```powershell
130+
Connect-AzAccount
131+
$subscriptionid = <'your subscription id here'>
132+
Set-AzContext -SubscriptionId $subscriptionid
133+
134+
$parameters = @{
135+
ResourceGroupName = '<Resource_Group_Name>'
136+
ServerName = '<Server_Name>'
137+
ElasticPoolName = '<Elastic_Pool_Name>'
138+
}
139+
140+
Set-AzSqlElasticPool @parameters -ZoneRedundant
141+
```
142+
143+
# [Azure CLI](#tab/cli)
144+
145+
Use Azure CLI to run the following command (replace the placeholders in `<>` with your resource names):
146+
147+
```azurecli
148+
az sql elastic-pool update --resource-group "<Resource_Group_Name>" --server "<Server_Name>" --name "<Elastic_Pool_Name>" --zone-redundant
149+
```
150+
151+
# [REST API](#tab/API)
152+
153+
To enable zone redundancy, see [Elastic Pools - Create Or Update API](/rest/api/sql/2022-05-01-preview/elastic-pools/create-or-update?tabs=HTTP).
154+
155+
---
156+
157+
## Redeployment (Hyperscale)
158+
159+
For the Hyperscale service tier, zone redundancy support can only be specified during database creation and can't be modified once the database is provisioned. If you wish to gain zone redundancy support, you need to perform a data transfer from your existing Hyperscale service tier single database. To perform the transfer and enable the zone redundancy option, a clone must be created using database copy, point-in-time restore, or geo-replica.
160+
161+
### Redeployment considerations
162+
163+
- There are two modes of redeployment (online and offline):
164+
165+
- The **Database copy and point-in-time restore methods (offline mode)** create a transactionally consistent database at a certain point in time. As a result, any data changes performed after the copy or restore operation have been initiated won't be available on the copied or restored database.
166+
167+
- **Geo-replica method (online mode)** is a redeployment wherein any data changes from source are synchronized to target.
168+
169+
- Connection string for the application must be updated to point to the zone redundant database.
170+
171+
### Redeploy a single database
172+
173+
#### Database copy
174+
175+
To create a database copy and enable zone redundancy with Azure portal, PowerShell, or Azure CLI, follow the instructions in [copy a transactionally consistent copy of a database in Azure SQL Database](database-copy.md?view=azuresql-db&preserve-view=true#copy-using-the-azure-portal).
176+
177+
#### Point-in-time restore
178+
179+
To create a point-in-time database restore and enable zone redundancy with Azure portal, PowerShell, or Azure CLI, follow the instructions in [Point-in-time restore](recovery-using-backups.md?view=azuresql-db&preserve-view=true#point-in-time-restore).
180+
181+
##### Geo-replica
182+
183+
To create a geo-replica of the database:
184+
185+
1. Follow the instructions with Azure portal, PowerShell, or Azure CLI in [Configure active geo-replication and failover (Azure SQL Database)](active-geo-replication-configure-portal.md?view=azuresql-db&preserve-view=true) and enable zone redundancy under **Compute + Storage**
186+
187+
1. The replica is seeded, and the time taken for seeding the data depends upon size of source database. You can monitor the status of seeding in the Azure portal or by running the following TSQL queries on the replica database:
188+
189+
```sql
190+
SELECT * FROM sys.dm_geo_replication_link_status;
191+
SELECT * FROM sys.dm_operation_status;
192+
```
193+
194+
1. Once the database seeding is finished, perform a planned (no data loss) failover to make the zone redundant target database as primary.
195+
- Use the [sys.dm_geo_replication_link_status](/sql/relational-databases/system-dynamic-management-views/sys-dm-geo-replication-link-status-azure-sql-database?view=azuresqldb-current&preserve-view=true) to view the status of the geo-replication state. The `replication_state_desc` is `CATCH_UP` when the secondary database is in a transactionally consistent state.
196+
- In the [sys.dm_operation_status](/sql/relational-databases/system-dynamic-management-views/sys-dm-operation-status-azure-sql-database?view=azuresqldb-current&preserve-view=true) dynamic management view, look for `state_desc` to be `COMPLETED` when the seeding operation has completed.
197+
198+
1. Update the server name in the connection strings for the application to reflect the new zone redundant database.
199+
200+
1. To clean up, consider removing the original non-zone redundant database from the geo replica relationship. You can choose to delete it.
201+
202+
## Validate zone redundancy
203+
204+
You can use Azure PowerShell or the Azure CLI or the [REST API](/rest/api/sql/databases/get) to check the `ZoneRedundant` property for a database.
205+
206+
# [Portal](#tab/portal)
207+
208+
1. In the Azure portal, navigate to your Azure SQL Database.
209+
1. Under **Settings**, select **Compute + Storage**.
210+
1. Check the value of the **Would you like to make this database zone redundant?** setting.
211+
212+
# [Azure PowerShell](#tab/powershell)
213+
214+
Use the following example command to check the value of `ZoneRedundant` property for a database, for example the `master` database.
215+
216+
```powershell
217+
Get-AzSqlDatabase -ResourceGroupName "myResourceGroup" -ServerName "myServerName" -DatabaseName "master"
218+
```
219+
220+
# [Azure CLI](#tab/cli)
221+
222+
Use the following example command to check the value of `ZoneRedundant` property for a database, for example the `master` database.
223+
224+
```azurecli
225+
az sql db show --resource-group "myResourceGroup" --server "myServerName" --name master
226+
```
227+
228+
# [REST API](#tab/API)
229+
230+
See [Databases - Get API](/rest/api/sql/2022-05-01-preview/databases/get?tabs=HTTP) and view the `properties.zoneRedundant` property.
231+
232+
---
233+
234+
## Disable zone-redundancy
235+
236+
To disable zone-redundancy for a single database or an elastic pool, you can use the Azure portal, ARM API, PowerShell, or CLI.
237+
238+
### Disable zone-redundancy for a single database
239+
240+
# [Portal](#tab/portal)
241+
242+
1. Go to the [Azure portal](https://portal.azure.com) to find and select the database that you no longer want to be zone-redundant.
243+
244+
1. Under **Settings**, select **Compute + Storage**.
245+
246+
1. Select **No** for **Would you like to make this database zone redundant?**
247+
248+
1. Select **Save**.
249+
250+
# [PowerShell](#tab/powershell)
251+
252+
```powershell
253+
set-azsqlDatabase -ResourceGroupName "<Resource-Group-Name>" -DatabaseName "<Server-Name>" -ServerName "<Server-Name>" -ZoneRedundant:$false
254+
```
255+
256+
# [CLI](#tab/cli)
257+
258+
```azurecli
259+
az sql db update --resource-group "<Resource-Group-Name>" --server "<Server-Name>" --name "<Server-Name>" --zone-redundant false
260+
```
261+
262+
# [REST API](#tab/API)
263+
264+
See [Databases - Create Or Update API](/rest/api/sql/2022-05-01-preview/databases/create-or-update?tabs=HTTP) and use the `properties.zoneRedundant` property.
265+
266+
---
267+
268+
### Disable zone-redundancy for an elastic pool
269+
270+
# [Portal](#tab/portal)
271+
272+
1. Go to the [Azure portal](https://portal.azure.com) to find and select the elastic pool that you no longer want to be zone-redundant.
273+
274+
1. Under **Settings**, select **Compute + Storage**.
275+
276+
1. Select **No** for **Would you like to make this elastic pool zone redundant?**.
277+
278+
1. Select **Save**.
279+
280+
# [PowerShell](#tab/powershell)
281+
282+
```powershell
283+
Set-AzSqlElasticpool -ResourceGroupName "<Resource-Group-Name>" -ServerName "<Server-Name>" -ElasticPoolName "<Elastic-Pool-Name>" -ZoneRedundant:$false
284+
```
285+
286+
# [CLI](#tab/cli)
287+
288+
```azurecli
289+
az sql elastic-pool update --resource-group "<Resource-Group-Name>" --server "<Server-Name>" --name "<Server-Name>" --zone-redundant false
290+
```
291+
292+
# [REST API](#tab/API)
293+
294+
See [Databases - Create Or Update API](/rest/api/sql/elastic-pools/create-or-update?tabs=HTTP) and use the `properties.zoneRedundant` property.
295+
296+
---
297+
298+
To disable zone-redundancy for Hyperscale service tier, you can reverse the steps documented in [Redeployment (Hyperscale)](#redeployment-hyperscale).
299+
300+
## Related content
301+
302+
- [Availability through redundancy - Azure SQL Database](high-availability-sla-local-zone-redundancy.md)
303+
- [Azure services that support availability zones](/azure/reliability/availability-zones-service-support)
304+
- [Azure regions that support availability zones](/azure/reliability/regions-list)

azure-sql/database/features-comparison.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ You can use different migration methods to move your data between SQL Server, Az
217217

218218
| **Source** | **Azure SQL Database** | **Azure SQL Managed Instance** |
219219
| --- | --- | --- |
220-
| SQL Server (on-premises, AzureVM, Amazon RDS) | **Online:** [Transactional Replication](replication-to-sql-database.md?view=azuresql-db&preserve-view=true) <br/> **Offline:** [Data Migration Service (DMS)](/sql/dma/dma-overview), [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP | **Online:** [Managed Instance link](../managed-instance/managed-instance-link-feature-overview.md?view=azuresql-mi&preserve-view=true), [Log Replay Service](../managed-instance/log-replay-service-overview.md?view=azuresql-mi&preserve-view=true), [Azure Data Migration Service (DMS)](/azure/dms/tutorial-sql-server-managed-instance-online-ads), [Transactional Replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) <br/> **Offline:** [Azure Database Migration Service](/azure/dms/tutorial-sql-server-managed-instance-offline-ads), [Native backup/restore](../managed-instance/restore-sample-database-quickstart.md?view=azuresql-mi&preserve-view=true), [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP, [Snapshot replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) |
220+
| SQL Server (on-premises, AzureVM, Amazon RDS) | **Online:** [Transactional Replication](replication-to-sql-database.md?view=azuresql-db&preserve-view=true) <br/> **Offline:** [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP | **Online:** [Managed Instance link](../managed-instance/managed-instance-link-feature-overview.md?view=azuresql-mi&preserve-view=true), [Log Replay Service](../managed-instance/log-replay-service-overview.md?view=azuresql-mi&preserve-view=true), [Azure Data Migration Service (DMS)](/azure/dms/tutorial-sql-server-managed-instance-online-ads), [Transactional Replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) <br/> **Offline:** [Azure Database Migration Service](/azure/dms/tutorial-sql-server-managed-instance-offline-ads), [Native backup/restore](../managed-instance/restore-sample-database-quickstart.md?view=azuresql-mi&preserve-view=true), [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP, [Snapshot replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) |
221221
| Single database | **Offline:** [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP | **Offline:** [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP |
222222
| SQL Managed Instance | **Online:** [Transactional Replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) <br/> **Offline:** [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP, [Snapshot replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) | **Online:** [Database copy/move](../managed-instance/database-copy-move-how-to.md?view=azuresql-mi&preserve-view=true), [Transactional Replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) <br/> **Offline:** Cross-instance point-in-time restore ([Azure PowerShell](/powershell/module/az.sql/restore-azsqlinstancedatabase#examples) or [Azure CLI](https://techcommunity.microsoft.com/t5/azure-sql-blog/cross-instance-point-in-time-restore-in-azure-sql-database/ba-p/386208)), [Native backup/restore](../managed-instance/restore-sample-database-quickstart.md?view=azuresql-mi&preserve-view=true), [BACPAC file (import)](/sql/relational-databases/data-tier-applications/import-a-bacpac-file-to-create-a-new-user-database), BCP, [Snapshot replication](../managed-instance/replication-transactional-overview.md?view=azuresql-mi&preserve-view=true) |
223223

0 commit comments

Comments
 (0)