我在执行函数时遇到了问题。

以下是我所做的:

使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:

日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'


当前回答

你需要运行这样的程序

GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]

其他回答

您没有执行它的权利,尽管您有足够的权限来创建它。

有关更多信息,请参阅授予对象权限(Transact-SQL)

您最好修改服务器角色,它是为安全特权而设计的。为您的用户添加系统管理员服务器角色。为了更好的安全性,您可以自定义服务器角色。但是这个方法会给你你现在想要的。

对象资源管理器->服务器->安全->登录 右键单击所需的用户 进入左边的服务器角色 确保选中sysadmin 点击OK并重新启动SQL服务器

祝你好运

我也遇到过同样的问题,我把db_owner权限也给了数据库用户。

如果您遇到类似上述问题的问题,即在执行解决方案时抛出异常,那么问题在于权限,没有正确地授予该组的用户访问数据库/存储过程的权限。你所需要做的就是像我下面所做的那样,用你的数据库名称、存储过程(函数)和权限类型或角色或你授予访问权限的人替换我的数据库名称。

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

最好的解决方案,我发现是创建一个新的数据库角色,即。

CREATE ROLE db_executor;

然后授予角色执行权限。

GRANT EXECUTE TO db_executor;

现在,当您转到用户的属性并转到user Mapping并选择您添加了新角色的数据库时,现在新角色将在database role membership for:部分中可见

欲了解更多细节,请阅读全文