Skip to content

Commit 199074e

Browse files
20250724 Move Migrate Azure SQL Database availability zones to sql-docs (#34796)
* 20250725 Move Migrate Azure SQL Database availability zones to sql-docs * Apply suggestions from code review Co-authored-by: Anastasia Harris <[email protected]> --------- Co-authored-by: Anastasia Harris <[email protected]>
1 parent 74f2f5b commit 199074e

File tree

4 files changed

+316
-22
lines changed

4 files changed

+316
-22
lines changed
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/high-availability-sla-local-zone-redundancy.md

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -184,27 +184,10 @@ In Azure SQL Database, a [server](./logical-servers.md) is a logical construct t
184184

185185
When a database with a zone-redundant configuration is created on a logical server, the `master` database associated with the server is automatically made zone-redundant as well. This ensures that in a zonal outage, applications using the database remain unaffected because features dependent on the `master` database, such as logins and firewall rules, are still available. Making the `master` database zone-redundant is an asynchronous process and will take some time to finish in the background.
186186

187-
When none of the databases on a server are zone-redundant, or when you create an empty server, then the `master` database associated with the server is **not zone-redundant**.
187+
When none of the databases on a server are zone-redundant, or when you create an empty server, then the `master` database associated with the server is **not zone-redundant**. To migrate your Azure SQL Database to use zone redundancy, follow the steps in [Migrate Azure SQL Database to availability zone support](enable-zone-redundancy.md).
188188

189-
You can use Azure PowerShell or the Azure CLI or the [REST API](/rest/api/sql/databases/get) to check the `ZoneRedundant` property for the `master` database:
189+
To check the `ZoneRedundant` property of the `master` database, use the Azure PowerShell or the Azure CLI or the [REST API](/rest/api/sql/databases/get) steps in [Validate Azure SQL Database availability zone status](enable-zone-redundancy.md#validate-zone-redundancy).
190190

191-
# [Azure PowerShell](#tab/azure-powershell)
192-
193-
Use the following example command to check the value of "ZoneRedundant" property for `master` database.
194-
195-
```powershell
196-
Get-AzSqlDatabase -ResourceGroupName "myResourceGroup" -ServerName "myServerName" -DatabaseName "master"
197-
```
198-
199-
# [Azure CLI](#tab/azure-cli)
200-
201-
Use the following example command to check the value of "ZoneRedundant" property for `master` database.
202-
203-
```azurecli
204-
az sql db show --resource-group "myResourceGroup" --server "myServerName" --name master
205-
```
206-
207-
---
208191

209192
## <a id="testing-application-fault-resiliency"></a> Test application fault resiliency
210193

@@ -226,9 +209,12 @@ A failover can be initiated using PowerShell, REST API, or Azure CLI:
226209

227210
Azure SQL Database features a built-in high availability solution that is deeply integrated with the Azure platform. It's dependent on Service Fabric for failure detection and recovery, on Azure Blob storage for data protection, and on Availability Zones for higher fault tolerance. In addition, SQL Database uses the Always On availability group technology from SQL Server for data synchronization and failover. The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and supports the most demanding SLAs.
228211

229-
## Related content
212+
## Next step
230213

231-
To learn more, review:
214+
> [!div class="nextstepaction"]
215+
> [Migrate Azure SQL Database to availability zone support](enable-zone-redundancy.md)
216+
217+
## Related content
232218

233219
- [Azure Availability Zones](/azure/reliability/availability-zones-overview)
234220
- [Service Fabric](/azure/service-fabric/service-fabric-overview)

azure-sql/database/index.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ metadata:
1313
author: WilliamDAssafMSFT
1414
ms.author: wiassaf
1515
ms.reviewer: mathoma
16-
ms.date: 09/27/2024
16+
ms.date: 07/24/2025
1717

1818
# linkListType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | video | whats-new
1919

@@ -123,6 +123,8 @@ landingContent:
123123
url: automated-backups-overview.md
124124
- text: High availability
125125
url: high-availability-sla-local-zone-redundancy.md
126+
- text: Enable zone redundancy
127+
url: enable-zone-redundancy.md
126128
- text: Active-geo replication
127129
url: active-geo-replication-overview.md
128130
- text: Failover groups

azure-sql/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,8 @@
505505
href: database/business-continuity-high-availability-disaster-recover-hadr-overview.md
506506
- name: High availability
507507
href: database/high-availability-sla-local-zone-redundancy.md
508+
- name: Enable zone redundancy
509+
href: database/enable-zone-redundancy.md
508510
- name: HA/DR checklist
509511
href: database/high-availability-disaster-recovery-checklist.md
510512
- name: Automated backups

0 commit comments

Comments
 (0)