我在执行功能时遇到问题。
这是我所做的:
- 使用SQL Server Management Studio创建一个函数。已成功创建。
- 然后,我尝试执行新创建的函数,这是我得到的:
对对象“ xxxxxxx”,数据库“ zzzzzzz”,模式“ dbo”的EXECUTE权限被拒绝。
GO
和Create
成GOCreate
。其他语法错误也似乎导致了此错误。
我在执行功能时遇到问题。
这是我所做的:
对对象“ xxxxxxx”,数据库“ zzzzzzz”,模式“ dbo”的EXECUTE权限被拒绝。
GO
和Create
成GOCreate
。其他语法错误也似乎导致了此错误。
Answers:
听起来您需要将相关存储过程的执行权限授予用户(或他们所属的组)。
例如,您可以这样授予访问权限:
USE zzzzzzz;
GRANT EXEC ON dbo.xxxxxxx TO PUBLIC
GRANT EXEC TO PUBLIC
授予对数据库中所有对象的访问权限
我发现的最佳解决方案是创建一个新的数据库角色,即
CREATE ROLE db_executor;
然后授予该角色执行权限。
GRANT EXECUTE TO db_executor;
现在,当您转到用户的属性并转到“用户映射”并选择已添加新角色的数据库时,新角色将在“数据库角色成员身份”部分中可见:
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
控件”。希望这会有所帮助:)
你需要运行这样的东西
GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]
[domain\user]
不是'domain\user'
尽管您具有创建它的足够权限,但您无权执行它。
有关更多信息,请参见GRANT对象权限(Transact-SQL)
如果您遇到上述问题,例如关于执行解决方案时引发的异常的问题,则问题是权限,未正确授予该组的用户访问数据库/存储过程的权限。您需要做的就是做类似下面的事情,用您的数据库名称,存储过程(函数)以及权限或角色的类型或授予访问权限的人替换我的数据库。
USE [StableEmployee]
GO
GRANT EXEC ON dbo.GetAllEmployees TO PUBLIC
/ ******对象:StoredProcedure [dbo]。[GetAllEmployees]脚本日期: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
我也遇到了同样的问题,我也解决了向数据库用户授予db_owner权限的问题。
如果使该用户成为特定数据库的特殊用户,则可能不会在属性的“用户映射”中将其设置为db_owner
这是如何授予一个不公开用户的权限,
直接查询:
Use MyDatabase
Grant execute on [dbo].[My-procedures-name] to [IIS APPPOOL\my-iis-pool]
Go