High Availability and Disaster Recovery Options for SQL Server and Azure SQL – Part 1

Problem

SQL Server and Azure SQL offer many options for high availability and disaster recovery. In this article, we look at various options for SQL Server high availability and SQL Server disaster recovery.

Solution

There are many disaster recovery solutions (DR) and a few high availability (HA) solutions at our disposal. Some date back to 1990s, while some are specific to Azure SQL only and most are available on SQL Server. We will review them one by one, including a bit of history, review general architectural designs, list compatibility with different editions of SQL Server and Azure SQL offerings, and describe pros and cons of each approach.

High Availability and Disaster Recovery Features in SQL Server

In SQL Server, whether it is on-premises or in a cloud (Azure, AWS, etc.), the following features are available:

  • SQL Server Replication
  • Log Shipping
  • Failover Cluster Instances
  • Database Mirroring
  • Always On Availability Groups
  • Managed Instance Link

SQL Server Replication

At the most basic level, replication is a means to copy data from a Publisher to a Subscriber. The technology was originally introduced in SQL Server 6.5 (1996). The technology has evolved with merge replication and GUI wizards in SQL Server 7.0 (1998), further improvements in SQL Server 2000, peer-to-peer in 2005, and continued refinements, but no fundamental redesign after that point.

The big difference of this feature is that it allows for a very granular level of selection of data for replication (down to specified tables and columns, including filtering by WHERE predicates).

SQL Server Replication is neither high availability (HA) nor a pure disaster recovery (DR) technology — but it can play a supporting role in both, depending on how it’s architected. Not ideal forHA — replication doesn’t offer automatic failover or synchronous data copying. The Publisher doesn’t wait for the Subscriber to send an acknowledgement before committing on the Publisher itself. It has a use for DR – replication can distribute data to remote sites for reporting or recovery.

The Replication topology typically consists of a Publisher, Distributor and Subscriber. All these can be a single server (when replicating from one instance to another, for example), or more servers. Especially if you have many subscribers, or a merge or peer-to-peer type where roles are mixed.

All work is done by Replication Agents, which are standalone programs, that are generating snapshots, reading transaction logs, distributing data to subscribers and reconciling changes. It supports one-way (transactional, snapshot), bidirectional (transactional), and multi-master setups (merge and peer-to-peer).

SQL Server Replication Options

  • Snapshot – The entire dataset is copied over to subscriber
  • Transactional – After copying initial dataset (i.e. snapshot), all subsequent changes are also streamed on a per transaction level
  • Merge – Used when multiple servers are exchanging information and synchronizing on regular intervals
  • Bi-Directional – Specific transactional replication topology that allows two servers to exchange data with each other.
  • Peer-to-peer – Enables multi-master topology, where all servers act as both publishers/subscribers and exchange data in near real time.

SQL Server Replication Analysis

For support by different editions, please see the screenshot below:

Replication TypeExpress, WebStandardEnterpriseAzure SQL DatabaseAzure SQL Managed Instance
TransactionalSubscriber OnlyYesYesSubscriber OnlyYes
SnapshotSubscriber OnlyYesYesSubscriber OnlyYes
MergenoYesYesnono
Bi-DirectionalnoYesYesnoYes
Peer-to-PeernonoYesnono

How to configure: right click the Replication folder in SSMS Object Explorer -> New Publication. See the URLs below for additional details.

Pros:

  • Ability to replicate to multiple servers
  • Allows for read data on Subscribers
  • Multi-master setup (master and peer-to-peer)
  • Customization of which data to replicate (tables, columns, predicates)
  • Replication between SQL Server (Enterprise) and Oracle

Cons:

  • Initial configuration and topology design may be complex
  • Schema changes may need to be coordinated between servers
  • Possible conflicts in merge and peer-to-peer replication

Additional Information:

SQL Server Log Shipping

The first native implementation of Log Shipping was in SQL Server 2000, complete with built-in support and a graphical user interface (GUI) for configuration and monitoring. In SQL Server 2005, Log Shipping became available in Web, Standard and Enterprise editions.

Log Shipping in SQL Server is a warm standby disaster recovery solution that involves automatically backing up transaction logs from a primary database, copying them to one or more secondary servers, and restoring them there on a scheduled basis.

Log Shipping is configured and operates on a per database level. It requires SQL Server Agent to be running (relies on jobs) and a shared path for primary and secondary servers.

Like Replication, Log Shipping is not ideal for HA, since there is no automatic failover – manual intervention is required. There’s also a delay between log backups and restores (default is 15 minutes). Designed for DR, to recover from primary server failure. Secondary server can be brought online manually with possible data loss.

It’s best suited for scenarios where:

  • You need a cost-effective DR strategy
  • You can tolerate some delay in data synchronization
  • You’re okay with manual failover in case of disaster

SQL Server Log Shipping Analysis

Of course, fully supported on SQL Server on Azure VMs, but not supported on Azure SQL Database and Azure SQL Managed Instance.

Log ShippingExpressStandard, Web, EnterpriseAzure SQL DatabaseAzure SQL Managed Instance
Log ShippingnoYesnono

How to configure: right click the database in Object Explorer, click Tasks -> Ship Transaction Log.

Pros:

  • Simplicity and reliability
  • Low cost
  • Multiple secondary targets
  • Customizable delay
  • Reporting capabilities

Cons:

  • No automatic failover
  • Per-database configuration
  • Synchronization delay
  • RPO and RTO limitations
  • SQL Server Agent dependencies

Additional Information:

SQL Server Database Mirroring

SQL Server Database Mirroring was introduced in SQL Server 2005 and saw improvements in 2008 (log steam compression). In SQL Server 2012, Database Mirroring was marked as deprecated, but it is still available in SQL Server 2025 release candidate.

For the first time with Database Mirroring, you could choose between asynchronous commit vs synchronous commit modes. Database mirroring can be used as both HA and DR solution. This architecture consists of principal server, mirror server and witness server (optional). It has three operating modes:

  • High Safety (synchronous commit) with optional automatic failover using a witness server.
  • High Performance (asynchronous commit) for lower latency, but no automatic failover.
  • High Safety without automatic failover – synchronous commit but manual failover only.

Database Mirroring is configured on a per-database level.

Since this feature is deprecated, Microsoft recommends migrating to Always On Availability Groups for modern HA/DR scenarios.

SQL Server Database Mirroring Analysis

Database MirroringWeb, ExpressStandardEnterpriseAzure SQL DatabaseAzure SQL Managed Instance
Database MirroringNoSync mode onlyYesNoNo

How to configure: Right click Database -> Tasks -> Mirror…

Pros:

  • Fast automatic failover (in high safety mode with witness only)
  • Zero data loss (in high safety mode only)
  • Automatic page repair (get copy from partner server)
  • Rolling upgrades with minimal downtime
  • Encryption for data transmission

Cons:

  • Per database configuration and failover
  • No readable mirror (no read-only replicas)
  • Possible inconsistent failover (each database fails over independently)
  • Deprecated feature (may be removed in any future version of SQL Server)
  • Need to update connection string after failover (if connection driver doesn’t support “Failover Partner” part)

Additional Information:

Failover Cluster Instance

SQL Server 7.0 (1998) was the first version to officially support Failover Cluster Instances (FCI), leveraging MSCS (Microsoft Cluster Service) for instance-level failover. In SQL Server 2000, integration into Windows Server Failover Clustering (WSFC) was included. The FCI technology has seen improvements in each version of SQL Server afterwards, including SQL Server 2025.

FCI is a single SQL Server instance installed across multiple nodes in a Windows Server Failover Cluster (WSFC). It provides instance-level high availability — if one node fails, another takes over with minimal downtime.

Since FCI is instance-level HA solution, all databases on an instance are included, you can’t pick individual databases or group of databases. Logins, jobs and other server-level objects are “replicated” to other nodes automatically, so you don’t have to worry about synchronizing them between nodes.

FCI does not replicate data between nodes at the SQL Server level. Instead, it relies on shared storage — typically SAN, SMB, or Storage Spaces Direct (S2D) — that is accessible by all nodes in the cluster. So, unlike Availability Groups (which use synchronous/asynchronous commit), FCI simply moves the SQL Server instance to another node, which then mounts the same data volumes. There’s no data copy or sync — just a switch in ownership.

With third party tools, you can setup FCI to not need shared storage and data replication between the nodes is handled by the third party tool.

If you’re architecting HA, FCI is excellent for local high availability with zero data loss, but it’s not ideal for geo-redundancy or read-scale.

Enterprise edition has full support for FCI, including multi-node clusters, multi-subnet failover, and advanced features like Storage Spaces Direct (S2D). Standard edition is limited to 2 nodes.

SQL Server FCI Analysis

Failover Cluster InstanceWeb, ExpressStandardEnterpriseAzure SQL DatabaseAzure SQL Managed Instance
Failover Cluster InstanceNo2 nodes maxYesNoNo

How to configure: install SQL Server on 2 or more nodes as Failover Cluster Instance through the installation wizard.

Pros:

  • Instance-level protection and failover (including system databases, logins, linked servers, jobs, etc.)
  • Single copy of data (shared storage)
  • Zero data loss and automatic failover (HA)
  • Supports all recovery models (simple, bulk-logged, full)
  • No need to update connection strings after failover (apps connect to VNN)

Cons:

  • No read-only replicas
  • Requires shared storage (can be costly)
  • No data redundancy (storage failure = total failure, unless no external replication)
  • Can’t scale out reads or writes (only one active node at a time)

Additional Information:

SQL Server Always On Availability Groups

SQL Server 2012 introduced Availability Groups (AG), a powerful and flexible HA/DR solution. AGs have seen major improvements in all consequent versions of SQL Server, including 2025.

Full support of Availability Groups is an Enterprise Edition feature. Since 2016, Standard Edition has Basic Availability Groups, which are a very limited version of AG.

The topology consists of a primary server, secondary server(s), and a listener to which clients can connect and be redirected to primary server (or secondary, depending on the connection string settings).

AG Supports both synchronous and asynchronous commit modes. AGs can have many secondary replicas in either sync or async modes, all of them can be used to offload read-only queries. Load balancing (read-only routing) is supported. There is no need to update application connection stings after failover, since the listener’s address doesn’t change. AG works on a “group of databases” and you pick which databases to add in a group. FCI instance can serve as a replica in AG, so complex topologies could be built. Also, log backups and copy-only full backups can be offloaded to secondary servers. Since 2025, there is full support for all kinds of backups (full, diff, log) on secondary servers.

SQL Server Availability Group Analysis

Key features added in each version of SQL Server:

SQL Server VersionKey Improvement or Added FeaturesNotes
2012Initial releaseEnterprise Edition only
2014Several improvementsReadable secondary performance, other
2016Basic AGIn Standard Edition (1 database only)
2016Distributed AGCross-cluster replication (AG of AGs)
2017Linux and ContainersOn Linux using Pacemaker
2019Clusterless AGNo WSFC required
2022Contained AGSystem databases, logins, jobs are synced
2025Backups on SecondaryFull, Differential and Log

Distributed AGs (DAG) can have two separate Availability Groups in one DAG. One will serve as a primary, and second as secondary.

On Linux, Pacemaker is used to orchestrate replicas and failovers.

A clusterless AG allows you to build an AG without WSFC or Pacemaker. In this case, only manual DR is available.

Number of Replicas

Maximum number of secondary replicas is 8, out of which 5 can be in synchronous commit mode.

SQL Server VersionMax Secondary ReplicasMax Readable ReplicasMax Synchronous Replicas
2012412
2014882
2016882
2017882
2019885
2022885
2025885

Availability on different editions on SQL Server and Azure SQL:

Availability GroupsWeb, ExpressStandardEnterpriseAzure SQL DatabaseAzure SQL Managed Instance
Availability GroupsNoBasic AG onlyYesNoNo

How to Configure: First, enable the Windows Server Failover Cluster feature in Windows Server. Create a cluster in Failover Cluster Manager in Windows, add nodes. Second, SSMS -> Object Explorer -> right click Always On High Availability -> New Availability Group Wizard.

Pros:

  • Works on “group of databases”
  • Automatic failover
  • No need to update connection strings after failover
  • Multiple replicas
  • Readable secondaries (offload reporting)
  • Load balancing (read-only routing)
  • Encrypted endpoints and TLS 1.3 support
  • Ability to build complex architecture (including on-prem to cloud hybrids)
  • A lot of configuration options (DAG, BAG, CAG, clusterless)
  • Ability to run backups on secondaries

Cons:

  • Enterprise edition requirement
  • Complex setup and configuration
  • Sync replicas can introduce latency
  • Troubleshooting of failovers or replica timeouts can be hard

Additional Information:

Managed Instance link is disaster recovery and migration feature that is available in SQL Server versions starting 2016. It allows replicating data from SQL Server to Azure SQL Managed Instance, which can also be used to offload reporting.

The minimum required edition for SQL Server is Standard.

SQL Server 2016, 2017 and 2019 only support one-way replication and failover to Azure SQL MI. Once failover has been performed, you can’t fail back, and the link is broken.

SQL Server 2022 allows for bi-directional failover, changing roles on demand, and establishing initial link from Azure SQL MI as a primary to SQL Server 2022.

MI Link is using Distributed Availability Groups under the hood to make things work. MI is configured on a per-database level.

Managed Instance LinkWeb, Express2016-2019 Standard, Enterprise2022+ Standard, EnterpriseAzure SQL DatabaseAzure SQL Managed Instance
Managed Instance Linknoyes (one-way repl/failover)YesNoYes

How to configure: SSMS Object Explorer -> Right click DB -> Azure SQL Managed Instance Link…

Pros:

  • Replicate data from SQL Server to SQL MI (and from SQL MI to SQL Server 2022+)
  • Disaster recovery
  • Offload reporting
  • Migration capabilities

Cons:

  • Single database per link
  • Limited number of links
  • No MI-to-MI support (as of 2025/09)
  • Can’t establish a link on MI that is part of failover group (as of 2025/09)

Additional Information:

Microsoft Fabric Mirrored Databases

You might have heard about a new feature for replicating data that is in preview in SQL Server 2025 and Azure SQL MI, and live for Azure SQL DB. The new Microsoft Fabric mirrored databases feature is NOT designed for high availability (HA) or disaster recovery (DR) in the traditional sense.

Instead, it’s built to support analytics, data integration, and real-time insights by continuously replicating data from SQL Server, Azure SQL Database, or Azure SQL Managed Instance into Microsoft Fabric’s OneLake. I included this just to make it clear and avoid confusion, because some people tend to think that it is another HA or DR solution.

Feature Summary

For features that we discussed, please see table below with a classification by HA and DR categories:

FeatureHigh AvailabilityDisaster RecoveryData Movement
SQL Server ReplicationLimitedYesasync
Transaction Log ShippingnoYesasync
Failover Cluster InstancesYesLimited
Database MirroringYesYessync / async
Availability GroupsYesYessync / async
Link to Managed InstancenoYesasync

For SQL Server, if you have Enterprise edition and enough budget, the best option can be Availability Groups as it covers both HA and DR and offers variety of advantages. Otherwise, other features have their own use cases, for cost effective and specific use-case scenarios.

Conclusion

In this article, we reviewed and compared available solutions for HA and DR in SQL Server and in some of the Azure SQL offerings, providing high level details, use cases and pros/cons for each solution.

Next Steps

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *