Иногда использование SYNONYMs является хорошей стратегией:
CREATE SYNONYM [schema.]name FOR [[[linkedserver.]database.]schema.]name
Затем обратитесь к объекту по его синониму в вашей хранимой процедуре.
Изменение места синонимов - это вопрос динамического SQL, но тогда ваши основные хранимые процедуры могут быть полностью динамическими без SQL. Создайте таблицу для управления всеми объектами, на которые нужно ссылаться, и хранимую процедуру, которая переключает все нужные синонимы в нужный контекст.
Эта функция доступна только в SQL Server 2005 и более поздних версиях.
Этот метод НЕ подходит для частого переключения или для ситуаций, когда разные соединения должны использовать разные базы данных. Я использую его для базы данных, которая иногда перемещается между серверами (она может работать в базе данных prod или в базе данных репликации, и у них разные имена). Восстановив базу данных в ее новом доме, я запустил на ней свой Switcheroo SP, и все работает примерно за 8 секунд.