Тогда почему мы можем вызывать функцию без префикса (схемы), созданную под dbo?
Из Книги Онлайн Документ на UDF
Скалярные функции могут быть вызваны там, где используются скалярные выражения. Это включает в себя вычисляемые столбцы и определения ограничений CHECK. Скалярные функции также можно выполнить с помощью оператора EXECUTE. Скалярные функции должны вызываться с использованием как минимум двухкомпонентного имени функции .
Так что это в основном ограничение, установленное командой разработчиков SQL Server, и я считаю его вполне правильным. Даже если это как-то разрешено (просто для разговора), я бы все равно использовал префикс Schema.
Я всегда поддерживаю использование имени схемы, даже если оно будет работать без его добавления. Это лучшая практика, и все «хорошие» разработчики используют ее независимо от того, насколько она избыточна.
Другая причина, по которой я вижу, состоит в том, что ядру СУБД нужно что-то различать между системными функциями getdate ()
и пользовательскими функциями. Если вам разрешено вызывать функцию без имени схемы, как ядро базы данных будет различать созданную пользователем функцию с именем Getdate или системную функцию GETDATE ().