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

以下是我所做的:

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

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


当前回答

在SQL Server Management Studio中,进入“security->schema->dbo”:

双击dbo,选择权限页面,然后点击“查看数据库权限”蓝色链接:

选择您想要更改权限的用户,并在“explicit”选项卡下查找“Execute”权限:

通过选中相应的框来选择相应的权限。

其他回答

给予这样的权限可能是危险的,特别是如果您的web应用程序使用相同的用户名。

现在web用户(以及整个万维网)也有权限在数据库中创建和删除对象。想想SQL注入!

我建议将Execute权限仅授予给定对象上的特定用户,如下所示:

grant execute on storedProcedureNameNoquotes to myusernameNoquotes

现在用户myusernameNoquotes可以执行过程storedProcedureNameNoquotes,而无需对有价值的数据拥有其他不必要的权限。

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

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

在SQL Server Management Studio中,进入“security->schema->dbo”:

双击dbo,选择权限页面,然后点击“查看数据库权限”蓝色链接:

选择您想要更改权限的用户,并在“explicit”选项卡下查找“Execute”权限:

通过选中相应的框来选择相应的权限。

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

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

我认为您必须选择您想要授予访问权限的对象,然后右键单击,并选择属性。在将要显示的模式窗口上选择权限,然后单击Search,在新显示的窗口上,选择browse,选择您想授予访问权限的用户,然后单击ok。它将为您显示权限和授予状态的列表,然后您可以选择授予或拒绝