Разрешение EXECUTE было отклонено на объекте «xxxxxxx», в базе данных «zzzzzzz», в схеме «dbo»,

Вопрос:У меня возникают проблемы с выполнением функции... Вот что я сделал: создать функцию, используя студию управления сервером sql. он был успешно создан. Затем я попытался выполнить вновь созданную функцию, и вот что я получу: Разрешение EXECUTE было отклонено объект "xxxxxxx", база данных 'zzzzzzz', схема 'dbo'. Ответ №1Похоже, вам нужно предоставить разрешение на выполнение для пользователя

Вопрос:

У меня возникают проблемы с выполнением функции…

Вот что я сделал:

  • создать функцию, используя студию управления сервером 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 [domainuser] Ответ №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” – это роль базы данных по умолчанию, в которую входят все пользователи.

Оцените статью
Добавить комментарий