Sql-server – Best way to perform SQL Server replication over multiple servers

replicationsql-server-2012

My current setup requires me to use three separate SQL Server 2012 instances (installed on 3 separate machines, separated geographically) and have the data be replicated across all 3. Any changes made in the 7 tables within my database need to be replicated based on where the change was made, for example, if I add a record on Server A, it needs to be added on Server B and Server C. If a record is added on Server B, it needs to be added on Server A and Server C. Same thing with Server C.

From what I've read, Bidirectional Transactional Replication seems to be the best avenue for me to use in SQL Server 2012 Standard. The issue that I'm having is that no one has a very good guide to Bidirectional Transactional Replication that really explains much. I think I've poured over Hilary Cotter and Microsoft's information a million times and I still can't seem to get it to work. The fluff data that they provide in examples just isn't practical and no one explains how to do it between two physical machines; they assume you're using the same machine and just replicating between another instance.

Am I doing something wrong or am I going about this the wrong way?

Best Answer

I had a long answer written on stackoverflow, but then you deleted the question about the same time I was ready to post it. I am not going to put the same effort in again, but in short:

  1. Check out the stairway to replication: http://www.sqlservercentral.com/stairway/72401/ It does not cover bidirectional transactional replication, but it covers the permissions involved in setting up transactional replication. That should allow you to figure out the bidirectional setup as well.
  2. You might want to check out merge replication instead. It was designed for multi-node bidirectional synchronization of data and offers nice conflict resolution handling. However it adds a guid column to each table.