У меня есть база данных FooDb
со схемой BarSchema
, которая содержит таблицу Tbl
(т.е. FooDb.BarSchema.Tbl
)по умолчанию схема синоним
Я также вошли в систему как пользователь с BarSchema
по умолчанию.
Этот запрос работает отлично
SELECT * FROM FooDb..Tbl
У меня также есть синоним для этой таблицы в другой БД
CREATE SYNONYM TblSynonym FOR FooDb..Tbl
Но теперь я получаю сообщение об ошибке «Неверное имя объекта„FooDb..Tbl“ " при выполнении
SELECT * FROM TblSynonym
Если я изменить синоним к
CREATE SYNONYM TblSynonym FOR FooDb.BarSchema.Tbl
все нормально работает.
Почему схема по умолчанию не работает в синонимах?
(Фон состоит в том, что я собираю данные из нескольких баз данных, все из которых имеют одинаковые имена таблиц, но разные имена схем. Было бы намного проще, если бы я мог установить схему по умолчанию для каждой базы данных для пользователя, а затем игнорировать это везде в сценарии)
Я проверил, что схема по умолчанию правильная как в базе данных -> Безопасность -> Пользователи, так и в Connection-> Security-> Logins-> User. (Ошибка возникает при использовании синонима, а не при его создании) – adrianm