В проекте базы данных VS2010 у меня есть что-то вроде следующего:
SELECT object_id
FROM [$(MyOtherDB)].sys.tables
Другими словами, обращение к глобальному системному объекту через ссылку на пользовательскую базу данных. Я установил ссылки на master.dbschema
как из содержащего проекта, так и из проекта MyOtherDB, а также ссылку из содержащего проекта на проект MyOtherDB, но все еще получаю предупреждения SQL04151. В этой теме есть дополнительная информация (где Герт Драперс, кажется, подтверждает, что это ошибка): http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/914c8560-f9c3-40b6-9275-5df48baef9b1.
Мне кажется, это ошибка. Объект внутри файла master.dbschema помечен как GloballyScoped, что означает, что он находится внутри глобального пространства имен, что должно означать, что вы можете ссылаться на него, используя следующие способы:
- [мастер]. [система]. [объекты]
- [userdb]. [sys]. [объекты]
- [sys]. [объекты]
Вариант 2 явно не работает, хотя должен.
Других ссылок на этот сценарий в Google я не нашел. Мне просто интересно, сталкивался ли кто-нибудь с этим и знал ли какие-либо исправления или обходные пути?