Max Vernon recommends a pull rather than push model when you need to insert cross-server:
Linked Servers offer a great way to connect two SQL Servers together, allowing remote querying and DML operations. Frequently, this is used to copy data from production to reporting. However, the temptation is to run the copy operation on the production, or source side. If you do that, even with a single
INSERT INTO
statement, SQL Server will process each individual row as a discreteINSERT INTO
statement via a cursor operation. This makes for very slow inserts across a linked server. Running the operation from the destination server means SQL Server can simply query the remote source table for all the rows, inserting them as a set into the destination table. The difference in speed can be eye-watering.
Click through for a slightly creepy picture and a less creepy example.