Please bear with me, I'm a developer working with a client without access to a strong DBA. I have a question about bi-directional replication with the following setup and requirements:

  • MSSQL Server Database A: the back-end of a web application in a remote environment
  • MSSQL Server Database B: a mirror of Database A that resides in a DMZ

Databases A and B can be updated independently from each other but need to stay in sync. Normally this would be a good candidate for bi-directional replication because the business rules are such that conflicts will not occur in the replicated tables.

However, the client has a security requirement that no transactions can be initiated from the remote environment into the DMZ.

Can I set up bi-directional replication so that the DMZ Database B pushes its changes to Database A and pulls Database A's changes in? Or do you suggest another strategy - replication or otherwise?


  • Depending on their logic behind reqs, you could potentially have the remote replication data sent to a distributor node that's on the DMZ already? If you can't let Database A alert of its changes, you're going to incur a lot of overhead and issues with a home-grown solution to sync the two. Commented Jul 27, 2015 at 20:20
  • @JohnM - The logic behind the req is that they don't want any inbound transactions, mostly I think to avoid DoS and to generally have explicit control over what data comes in to the DMZ. So, I don't think the remote DB can send data anywhere in the DMZ. I agree that a home-grown solution is going to be tricky, tho.
    – cbonelli
    Commented Jul 27, 2015 at 20:44
  • The symmetricds solution provides such support for replication in such szenarios. symmetricds.org Commented Jul 27, 2015 at 21:25

1 Answer 1


Yes you can run all the replication agents from the machine inside the firewall. After everything is setup normally, just disable the SQL Agent jobs that run the agents on the DMZ machine, then create the same jobs on the machine inside the network. Enable the jobs inside the network and start them.

The push and pull terminology with SQL replication just refers to the machine that actually runs the job. There's no other differences besides the job location.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.