MS SQL servers in different countries linked for ETL via SP
I had to work around a similar issue where the two locations where 13,000 kilometers away and the internet connection on one of the locations was 1995 level of poor:



(Forget about merge replications and all other fancy methods). 

So after all kinds of test including Azure and other cloud services I realized I was gonna have to go with something far less orthodox.

I created a new custom TCP/IP service (basically a silent console application that runs in the background on a separate thread than the users frontend) using C# that basically queries the database on either end and finds modified, deleted and new records every 15 minutes (using GUID to make sure records on both sides have same identifiers) it will then compress and encrypt this data and send it to the other location where a queue table with timestamps will determine whether or not the records are to be committed. If a record on the receiving instance has a newer timestamp that the record being brought in (accounting for a 4 hour difference) then they go into a conflict resolution routine. 

Then some modifications to the users frontend where necessarily mainly so they're aware of data changing on one side or new records added to the database.

All of this was possible because they only needed 3 tables to be doing this cycle, I will not recommend it for drastically more complex scenarios.