With the release of SQL Server 2005 Service Pack 1 (SP1) in April, database mirroring finally became a reality for SQL Server 2005. Implementing this high-availability feature, which is supported by both 64-bit and 32-bit SQL Server 2005 Enterprise and Standard editions, involves using three SQL Server systems: a principal server, a mirror server, and a witness server. The principal and mirror are required. The witness is needed only if you want automatic-failover capability. Although the principal and mirror must run on the Enterprise or Standard editions, the witness can be any SQL Server edition, including SQL Server 2005 Express,and none of the systems involved are required to have matching or specialized hardware.

Database mirroring doesn't share the distance limitations of Windows clustering. And, unlike Windows clustering, which runs at the system server level, database mirroring is implemented at the database level. This feature works by sending transaction-log records between the principal and mirror servers. The principal server is the source of the database changes. The mirror server maintains a copy of one or more of the principal server's mirrored databases. Note that the mirror server isn't restricted to providing just data backup services but can also actively support other unrelated databases and applications.

Working with the new SQL Native Client (SNAC), database mirroring enables maximum availability for client applications by automatically redirecting SNAC network clients to the mirror server if the database on the principal server is unavailable. Database mirroring operates in two modes, asynchronous and synchronous:

1. Asynchronous

Of the two modes, asynchronous provides the best performance but offers lower transaction consistency and doesn't support automatic failover. Database transactions on the principal server are immediately committed on the principal without waiting for the mirror server to acknowledge that it's written the data to its log. Transactions are written to the mirror server asynchronously.

2. Synchronous

Synchronous mode provides a higher level of data protection than asynchronous mode. To ensure that transactions are committed on both the principal and the mirror servers, the principal waits for an acknowledgement from the mirror before committing transactions. The wait imposes a performance overhead that's influenced by the activity of the systems and their connection speed. This mode is best suited for high-speed LAN links.

Synchronous database mirroring in turn supports two operation modes: high availability and high protection. In high-availability mode, if you have a witness server, database availability is the highest priority. The protected database will be available as long as two of the three servers (principal, mirror, witness) are present. High-availability mode is capable of automatic failover.

In high-protection mode, if you don't have a witness server, protecting the data is the highest priority. If either the principal or the mirror is unavailable, then the database is taken offline.