Разрешение EXECUTE было отклонено на объекте "xxxxxxx", в базе данных "zzzzzzz", в схеме "dbo",
У меня возникают проблемы с выполнением функции...
Вот что я сделал:
- создать функцию, используя студию управления сервером sql. он был успешно создан.
- Затем я попытался выполнить вновь созданную функцию, и вот что я получу:
Разрешение EXECUTE было отклонено объект "xxxxxxx", база данных 'zzzzzzz', схема 'dbo'.
Ответы
Ответ 1
Похоже, вам нужно предоставить разрешение на выполнение для пользователя (или группы, частью которой они являются) для хранимой процедуры.
Например, вы можете предоставить доступ таким образом:
USE zzzzzzz;
GRANT EXEC ON dbo.xxxxxxx TO PUBLIC
Ответ 2
Лучшее решение, которое я нашел, - создать новую роль базы данных i.e.
CREATE ROLE db_executor;
а затем предоставить разрешение на выполнение роли.
GRANT EXECUTE TO db_executor;
Теперь, когда вы переходите к свойствам пользователя и переходите к пользовательскому сопоставлению и выбираете базу данных, в которой вы добавили новую роль, теперь новая роль будет видна в членстве в роли базы данных для: section
Подробнее читайте в полной статье
Ответ 3
В сервере Sql:
просто перейдите к security->schema->dbo
.
Дважды щелкните dbo, затем нажмите permission tab->(blue font)view database permission
и не стесняйтесь прокручивать требуемые поля, такие как "execute".
Помогите себе выбрать с помощью элементов управления grant
или deny
. Надеюсь, это поможет:)
Ответ 4
вам нужно запустить что-то вроде этого
GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]
Ответ 5
Это будет работать, если вы пытаетесь предоставить разрешение пользователям или ролям.
Использование Microsoft SQL Server Management Studio:
- Перейти к: Базы данных
- Щелкните правой кнопкой мыши на dbo.my_database
- Выберите: Свойства
- На левой боковой панели нажмите "Разрешения"
- Выберите пользователя или роль и в панели имен
- Найти Выполнить в разрешениях и галочке: Грант, С Грантом или Отклонить
Ответ 6
Вы не имеете права его исполнять, хотя у вас достаточно прав для его создания.
Для получения дополнительной информации см. Разрешения объекта GRANT (Transact-SQL)
Ответ 7
Предоставление такого разрешения может быть опасным, особенно если ваше веб-приложение использует это же имя пользователя.
Теперь веб-пользователь (и вся всемирная сеть) также имеет разрешение на создание и удаление объектов в вашей базе данных. Подумайте, SQL Injection!
Я рекомендую предоставить привилегии Execute только конкретному пользователю на данном объекте следующим образом:
выполнить execute на storedProcedureNameNoquotes в myusernameNoquotes
Теперь пользователь myusernameNoquotes может выполнять процедуру storedProcedureNameNoquotes без других ненужных разрешений на ваши ценные данные.
Ответ 8
У меня возникла одна и та же проблема, и я решил разрешить db_owner также пользователю базы данных.
Ответ 9
Если у вас есть такие проблемы, как вопрос, заданный выше в отношении исключения, возникшего при выполнении решения, проблема заключается в разрешении, не предоставляемом надлежащим образом пользователям этой группы для доступа к базе данных/хранимой процедуре. Все, что вам нужно сделать, это сделать что-то вроде того, что у меня есть ниже, заменив мое имя базы данных, хранимые процедуры (функции) и тип разрешения или роли или кто вы предоставляете доступ.
USE [StableEmployee]
GO
GRANT EXEC ON dbo.GetAllEmployees TO PUBLIC
/****** Объект: StoredProcedure [dbo]. [GetAllEmployees] Script Дата: 01/27/2016 16:27:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GetAllEmployees]
as
Begin
Select EmployeeId, Name, Gender, City, DepartmentId
From tblEmployee
End
Ответ 10
Если вы сделаете этого пользователя особенным для конкретной базы данных, возможно, вы не установите его как db_owner в "сопоставлении пользователей" свойств
Ответ 11
Вы можете дать всем разрешение на выполнение:
GRANT Execute on [dbo].your_object to [public]
"Public" - это роль базы данных по умолчанию, в которую входят все пользователи.