What is the recommended way of joining SQL Server database tables located on databases which are on different servers?
All databases will be on the same network.
Linked Servers are the way to go for simple/low end implementation.
If you are looking at quite a high end platform/architecture then you may want to look at SQL Server Federated Databases.
Linked servers work - but have some issues that make me try to avoid them:
Over time they make managing your environment, from a high level, a nightmare. Servers come and go, get upgraded and so on, and that gets really sketchy when you have hundreds of queries lurking around with servernames hardcoded in (think "... join myRetriringServer.someDatabase.dbo.importantData ..." ). Aliases help, but they are a hassle IMHO. It's an example of problematic tight coupling.
Performance can be a very serious problem because cross-server queries of any complexity don't optimize, and you'll find the servers frequently resort on-the-fly copies of whole tables over the wire. (Joe ++)
If you're in a really small environment, it works OK. For bigger environments, I much prefer moving slowly-changing data around with SSIS, and then working to co-locate rapidly changing / dependent data on the same server for performance.
You can set the servers up as linked servers:
http://www.sqlservercentral.com/articles/Video/66413/
You will then be able to run queries that reference the different databases.
You can use linked servers, though there can be some funky things with query execution in some cases. It depends on the queries you're running.
You can alternately set up replication from the other databases to a single server, and run all queries on that one server.