Схема является неотъемлемой частью объекта: вы можете удалить ее только из кода, который ссылается на объект
Во время компиляции наблюдается снижение производительности, поскольку оно должно решить, в какой схеме находится объект.
SELECT * FROM foobar
- это не то же самое SELECT * FROM dbo.foobar
и потребует проверки, чтобы увидеть, в какой схеме foobar
находится. То есть он будет искать [domain\user].foobar
, прежде чем перейти к dbo.foobar
.
С «Кэширование и повторное использование плана выполнения» :
...
Алгоритмы для сопоставления новых операторов SQL с существующими, неиспользованными
планы выполнения в кеше требуют
чтобы все ссылки на объекты были полностью
Квалифицированный. Например, первый из
эти операторы SELECT не совпадают
с существующим планом, а второй
соответствует:
SELECT * FROM Contact
SELECT * FROM Person.Contact
А для NT-соединений вы не можете указать схему по умолчанию, поэтому не можете этого избежать
А если вы хотите SCHEMABINDING в представлениях и т. Д., То вы должны определить схему.
и т.д.
Это гораздо больше, чем "беспорядок в коде"
Редактировать: после вашего комментария в другом месте ...
Вы запустили создание таблицы без схемы, поэтому у вас есть объект [domain\user].AgencyProfile
. Конечно dbo.AgencyProfile
не существует
Вам нужно запустить 'ALTER AUTHORIZATION ON [домен \ пользователь] .AgencyProfile TO dbo' , который заменит sp_changeobjectowner