1) Snapshot is a static read only picture of
database at a given point of time. Snapshot is implemented by copying a Page
(8KB for SQL SERVER) at a time. For e.g. assume you have a table in your DB,
& you want to take a snapshot of it. You specify the physical coordinates
for storing snapshot & when ever original table changes the affected rows
are pushed first to the the snapshot & then changes happen to the DB. (N.B.
There is also something called as Snapshot Isolation Level which is different
from Database Snapshot).
Usage Scenario: You
have a separate DB for report generation, and want to ensure that latest data
for that is available. You can periodically take snapshot of your transactional
database.
2) Log
Shipping is an
old technique available since SQL SERVER 2000. Here the transactional log (ldf)
is transferred periodically to the standby server. If the active server goes
down, the stand by server can be brought up by restoring all shipped logs.
Usage Scenario: You can
cope up with a longer down time. You have limited investments in terms of
shared storage, switches, etc.
3) Mirroring which was introduced with 2005
edition, works on top of Log Shipping. Main difference is the uptime for the
standby server is quite less in mirroring. Standby server automatically becomes
active in this case (through help of a broker server which is called as Witness
in SQL SERVER parlance), without having to restore logs (actually logs are
continuously merged in this scenario – no wonder it’s called Mirror :) ). Additional advantages of Mirroring
include support at .NET Framework level (read no switching/routing code –
requires ADO.NET 2.0
& higher) plus some new features like Auto Page Recovery introduced with
SQL SERVER 2008.
Usage Scenario: You
want very less down time and also a cost effective solution in terms of shared
storage, switches, etc. Also you are targeting a single database which easily
fits in your disks.
4) Replication is used mainly when data centers are
distributed geographically. It is used to replicate data from local servers to
the main server in the central data center. Important thing to note here is,
there are no standby servers. The publisher & subscriber both are active.
Usage Scenario: A
typical scenario involves syncing local / regional lookup servers for better
performance with the main server in data center periodically, or sync with a
remote site for disaster recovery.
5) Failover
Clustering is a
high availability option only (unlike others above which can be used for
disaster recovery as well) used with clustering technology provided by hardware
+ OS. Here the data / databases don’t belong to either of servers, and in fact
reside on shared external storage like SAN. Advantages of a SAN storage is
large efficient hot pluggable disk storage. You might see DR options like
Mirroring used quite frequently with failover clustering. Here’s a good article on adding geo redundancy to a failover
cluster setup.
You
might want to look at the licensing options of SQL Server, various editions
available and how they map to above features. You can find this information in
detail here.
Hope that helps to some
extent :) .