У меня есть приложение .NET, которое подключается к базе данных SQL Server 2012. Приложение использует роль приложения SQL Server, которая имеет разрешения на выполнение только для хранимых процедур в базе данных. Приложение использует корпоративную библиотеку, которая использует метод SqlCommandBuilder.DeriveParameters
.Вызов системной хранимой процедуры «sys.sp_procedure_params_100_managed» в SQL Server не возвращает данные для роли приложения
Этот метод вызывает системную процедуру [sys].[sp_procedure_params_100_managed]
. Призыв к этой процедуре не возвращает никаких результатов, которые являются ошибкой и заставляет EL выдавать «Хранимую процедуру xx не существует». XX - это параметр, имя процедуры, к системной процедуре sp_procedure_params_100_managed
, чтобы получить информацию параметров процедуры ввода. Если я делаю тот же вызов, используя пользователя с более высокими привилегиями SQL Server, процедура возвращает данные. Таким образом, никакие данные для роли приложения, по-видимому, не являются проблемой разрешения/привилегий.
Как предоставить надлежащие разрешения конкретной системной процедуре роли приложения?
Роль приложения определяется только в конкретной базе данных. Это не видно в мастер. Я получаю «не могу найти пользователя« xx »...» Также я не уверен в выполнении гранта. Роль приложения не получает ошибку отказа от выполнения, если грант не добавляет правильные разрешения. – Abdu
Замените «USE Master» на «USE MyDataBase» –