Hey Carl,
Other options you could check into include but not limited to, are Mirroring or Snapshots.
However, In My Opinion (IMO) I prefer Log Shipping to these.
Here are the reasons.
1) Odds are you are already making a transaction log backup at some interval, thus there is no more overhead on the production SQL Server, whereas replication would add some overhead, maybe not much, but sometimes every little bit counts.
2) The action of restoring your transaction log backups to another SQL Server validates that you good transaction log backups.
3) If your transaction log backup files are stored on a SAN and not somewhere on the Production SQL Server then the only overhead in on the Backup SQL Server when you restore the transaction log backups, no additional overhead on the Production Server. If the transaction log backup files are somewhere on the Production SQL Server (which I hope they are not for other reasons). Then the only overhead will be the network bandwidth when either; copying the transaction log backup files to another location, or the network bandwidth when restoring them on your Backup SQL Server directly from the Production Server’s local Backup location.
4) In the catastrophic case where your Production SQL Server completely dies, you can:
- Re-restore the last transaction log backup using the (RESTORE WITH RECOVERY) option
- Point the clients to you Backup SQL Server
- Login to Dynamics GP and change their passwords or see this post. In addition, you can check out this post.
- You are now back up and running in almost no time.
Some important notes about switching your Backup SQL Server to Production mode, (1) while it is still a Backup SQL Server, long before anything happens to Production go ahead and transfer the SQL logins to the Backup SQL Server. There are lots of post on how to that, so let us skip listing them here. (2) If you have the SSRS Reports, Excel Refreshable Reports installed you will need to redeploy them, but depending on your SQL Server that does not take incredibility long to do.
That only leaves us with the time delay issue. Most of which depends on your hardware, and how often you make transaction log backups, the shortest time that I know for a SQL job schedule is one (1) second. Therefore, if your hardware can support it, you could in theory, make a transaction log backup every second and restore it every second and your backup SQL Server would be only a second or two behind.
However, the bigger question is; Do the users, or in your case the CRM program, really need to be that close in time? Would anyone really notice if the two SQL Servers were 5 minutes apart? On the other hand, even if the two SQL Servers were 15 minutes apart, would anyone notice? In most cases, not all, and you may be the exception, making a transaction log backup and restoring it somewhere else every 15 minutes is unnoticeable by the common user.
Of course, all of this is totally IMO, and my name is most not “The Almighty One”, and always remember, what works in one case does not work for all cases. Probably why there are multiple options out there. ;)
Hope some of this helps,