У меня есть БД, работающая на SQL Server 2005 с пользовательским типом данных. Определяемый пользователем тип данных также реализован в базе данных модели, поэтому при создании временной таблицы я могу использовать тот же определяемый пользователем тип данных.
Например, в AppDB я определил этот тип данных:
CREATE TYPE [dbo].[ product_code] FROM [varchar](8) NULL
И то же самое в модели:
CREATE TYPE [dbo].[ product_code] FROM [varchar](8) NULL
Я обнаружил, что если вход в систему безопасности в моем экземпляре базы данных имеет роль сервера sysadmin, то у пользователя нет проблем с вызовом хранимых процедур, которые создают таблицы в базе данных tempdb с использованием типа данных product_code, но если я удалю системного администратора из входа в систему безопасности приложения, тогда вызов хранимой процедуры не выполняется.
Тот же вызов хранимой процедуры завершится успешно, если я заменю определяемый пользователем тип данных системным типом данных varchar.
По соображениям безопасности я не хочу добавлять роль сервера sysadmin в систему безопасности приложения - какие у меня есть варианты, если я хочу продолжить использование определяемых пользователем типов данных? Изменились ли эти параметры в SQL Server 2008?
В частности, какие разрешения помимо тех, которые предоставлены роли public, требуются? Ответы, требующие редактирования всех хранимых процедур, будут считаться неотзывчивыми.