• I prefer to use a linked server.  This method is the most flexible and supports multiple environments (dev,test,prod).

    You imply in your article that the linked server name must be the actual server name.  This is not true.  Instead of using the "SQL Server" option in the linked server creation dialog, if you use the "Other data sources" option and point to the OLE DB driver for SQL Server, you can now set the linked server up with any name you want.  Now, you can have a linked server named PubsLink in every environent and code does not have to change, only the details of the linked server.  Also, when that subscription database grows in size or users to the point where you HAVE to move it off to it's own server, there are no code changes to make, only details of the linked server and it just works.