У меня есть эта функция с именем fn_blah
, которая находится в базе данных Master
SQL Server 2000. Эта же функция находится в базе данных master
SQL Server 2008. На поле SQL Server 2000, функция работает нормально при другом контексте базы данных без указания владельца (например, ПСЭ.):Пользовательская функция в основной базе данных не будет выполнена
User OtherDB1;
EXEC fn_blah;
Но на поле SQL Server 2008, приведенный выше запрос не будет работать. Будет работать, если вы измените контекст базы данных на master
, а затем запустите его, как указано выше. Или вы запускаете следующее:
EXEC master.dbo.fn_blah
Кто-нибудь видел такое поведение раньше? Любая помощь приветствуется. Благодаря!
** Не ставьте объекты пользователя в мастер. ** Проблема решена! – JNK
Были изменения в том, как обрабатываются схема и владелец с SQL Server 2000 до SQL Server 2005. Я не помню их всех, но если вы посмотрите на изменения между ними (должна быть документация на веб-сайте Microsoft сайты где-то), вы должны уметь понять, почему это изменилось, но так как вы знаете, как заставить его работать в обоих, действительно ли это стоит усилий? – David
Ваш контекст немного запутанный. Вы говорите, что вы вызываете * функцию *, используя * EXEC *? –