Упоминаемый вами "хороший" формат - это просто ссылка на объект из 4 частей.
select * from [server\instance].database.owner.tablename
3 часть
select * from database.owner.tablename
2 часть
select * from owner.tablename
Если вы хотите динамически изменить любое из значений сервера, БД или схемы, у вас есть один вариант:
EXEC (@sqlstring)
Однако, если вы обращаетесь только к хранимым процессам удаленно ...
DECLARE @RemoteSP varchar(500)
SET @RemoteSP = '[server\instance].database2.schema.proc2'
EXEC @RemoteSP @p1, @p2, @p3 OUTPUT
SET @RemoteSP = '[server\instance].database1.schema.proc1'
EXEC @RemoteSP @p4, @p5, @p6 OUTPUT
Однако, изменение компонентов ссылки на объект не имеет смысла: если вы знаете, что собираетесь запросить таблицу, просто вызовите эту таблицу в этой базе данных ...