У меня проблемы с выполнением функции.
Вот что я сделал:
- Создайте функцию с помощью SQL Server Management Studio. Он был успешно создан.
- Затем я попытался выполнить вновь созданную функцию, и вот что я получаю:
Разрешение EXECUTE было отклонено для объекта «xxxxxxx», базы данных «zzzzzzz», схемы «dbo».
sql-server
упендра пармар
источник
источник
GO
иCreate
вGOCreate
. Другие синтаксические ошибки также, кажется, дают эту ошибку.Ответы:
Похоже, вам нужно предоставить разрешение на выполнение пользователю (или группе, в которую он входит) для рассматриваемой хранимой процедуры.
Например, вы можете предоставить доступ таким образом:
источник
GRANT EXEC TO PUBLIC
для предоставления доступа ко всем объектам в базе данныхЛучшее решение, которое я нашел, это создать новую роль базы данных, т.е.
и затем предоставьте этой роли разрешение exec.
Теперь, когда вы переходите к свойствам пользователя и переходите к сопоставлению пользователей и выбираете базу данных, в которую вы добавили новую роль, теперь новая роль будет отображаться в членстве в роли базы данных для раздела:
Для более подробной информации прочитайте статью полностью
источник
EXEC sp_addrolemember @rolename = N'db_executor', @membername = N'processAPI'
В Sql Server Management Studio:
просто иди к
security->schema->dbo
.Дважды щелкните dbo, затем нажмите
permission tab->(blue font)view database permission
и не стесняйтесь прокручивать необходимые поля, такие как «"execute".
Помоги себе самому», выбратьgrant
или использоватьdeny
элементы управления. Надеюсь, это поможет :)источник
вам нужно запустить что-то вроде этого
источник
[domain\user]
а не'domain\user'
Это будет работать, если вы пытаетесь предоставить разрешение пользователям или ролям.
Использование Microsoft SQL Server Management Studio:
источник
Предоставление такого разрешения может быть опасным, особенно если ваше веб-приложение использует то же имя пользователя.
Теперь веб-пользователь (и вся всемирная паутина) также имеет право создавать и удалять объекты в вашей базе данных. Подумайте, SQL-инъекция!
Я рекомендую предоставить права на выполнение только конкретному пользователю для данного объекта следующим образом:
Теперь пользователь myusernameNoquotes может выполнять процедуру хранимуюProcedureNameNoquotes без других ненужных разрешений на ваши ценные данные.
источник
У вас нет права на его выполнение, хотя у вас достаточно прав для его создания.
Для получения дополнительной информации см. Разрешения объектов GRANT (Transact-SQL).
источник
Если у вас есть проблемы, такие как вопрос, заданный выше относительно исключения, выдаваемого при выполнении решения, проблема заключается в том, что пользователям этой группы не предоставлено надлежащее разрешение на доступ к базе данных / хранимой процедуре. Все, что вам нужно сделать, это сделать что-то вроде того, что у меня есть ниже, заменив мое имя вашей базой данных, хранимыми процедурами (функцией) и типом разрешения или роли или тем, кому вы предоставляете доступ.
/ ****** Объект: StoredProcedure [dbo]. [GetAllEmployees] Дата сценария: 27.01.2016 16:27:27 ****** /
источник
Вы можете дать каждому разрешение на выполнение:
«Public» - это роль базы данных по умолчанию, членом которой являются все пользователи.
источник
Я столкнулся с той же проблемой, и решил, что даю разрешение db_owner и пользователю базы данных.
источник
Если вы сделаете этого пользователя особенным для конкретной базы данных, то, возможно, вы не установите его как db_owner в «сопоставлении пользователей» свойств
источник
Вам лучше изменить серверные роли, которые были разработаны для привилегий безопасности. добавьте роль сервера sysadmin своему пользователю. для большей безопасности у вас могут быть свои пользовательские роли сервера. но этот подход даст вам то, что вы хотите сейчас.
Удачи
источник
вот как дать разрешение для одного не публичного пользователя,
Прямой запрос:
Use MyDatabase Grant execute on [dbo].[My-procedures-name] to [IIS APPPOOL\my-iis-pool] Go
источник