У меня есть база данных, работающая на 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, но если я удаляю sysadmin из безопасности приложения войти в систему, то вызов хранимой процедуры завершится неудачей.
Тот же самый вызов хранимой процедуры завершается успешно, если я заменяю определенный пользователем тип данных системным типом данных varchar.
По соображениям безопасности я не хочу добавлять роль сервера sysadmin к входу в систему безопасности приложения - какие варианты у меня есть, если я хочу продолжать использовать пользовательские типы данных? Меняются ли эти параметры в SQL Server 2008?
В частности, какие разрешения помимо тех, которые предоставлены для public роли, требуются? Ответы, требующие редактирования всех хранимых процедур, будут считаться неотвечающими.