EXECUTE权限在对象“xxxxxxx”,数据库“zzzzzzz”,模式“dbo”
我遇到问题执行一个function…
以下是我所做的:
- 使用sql server management studio创build一个函数。 它被成功创build。
- 然后我试着执行新创build的函数,这里是我得到的:
EXECUTE权限在对象'xxxxxxx',数据库'zzzzzzz',模式'dbo'上被拒绝。
听起来像你需要授予执行权限的用户(或他们的一部分组)的存储过程的问题。
例如,您可以授予访问权限:
USE zzzzzzz; GRANT EXEC ON dbo.xxxxxxx TO PUBLIC
我发现最好的解决scheme是创build一个新的数据库angular色即
CREATE ROLE db_executor;
然后授予该angular色的exec权限。
GRANT EXECUTE TO db_executor;
现在,当您转到用户的属性并转到“用户映射”并select添加了新angular色的数据库时,现在新angular色将显示在“数据库angular色成员身份:”部分
欲了解更多详情阅读全文
在Sql Server中:
只需要去security->schema->dbo
。
双击dbo,然后点击permission tab->(blue font)view database permission
,随意滚动查看所需的字段,如"execute".
帮助自己select使用grant
或deny
控制。 希望这会帮助:)
你需要运行这样的东西
GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]
如果您尝试向用户或angular色授予权限,则这将起作用。
使用Microsoft SQL Server Management Studio:
- 转到:数据库
- 右键单击dbo.my_database
- select:属性
- 在左侧面板上,点击:权限
- select用户或angular色,然后在名称面板中
- 查找执行权限和复选标记:授予,授予或拒绝
尽pipe您有足够的权限来创build它,但您无权执行此操作。
有关更多信息,请参阅GRANT对象权限(Transact-SQL)
给予这样的权限可能是危险的,特别是如果您的Web应用程序使用相同的用户名。
现在,Web用户(以及整个万维网)也有权在数据库中创build和删除对象。 认为SQL注入!
我build议只授予给定对象的特定用户的执行权限,如下所示:
将storedProcedureNameNoquotes的执行授予myusernameNoquotes
现在用户myusernameNoquotes可以执行storedProcedureNameNoquotes过程,没有其他不必要的权限您的宝贵的数据。
我遇到了同样的问题,我解决了给数据库用户的db_owner权限。
如果您遇到上述问题,例如执行解决scheme时引发的exception问题,则问题是权限,未正确授予该组的用户访问数据库/存储过程。 所有你需要做的就是做下面的事情,用你的数据库名称,存储过程(函数)以及权限或angular色的types或你授予访问权限的人来replace我的东西。
USE [StableEmployee] GO GRANT EXEC ON dbo.GetAllEmployees TO PUBLIC
/ ******对象:StoredProcedure [dbo]。[GetAllEmployees] Script Date: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
你可以给每个人执行权限:
GRANT Execute on [dbo].your_object to [public]
“公共”是所有用户都是其成员的默认数据库angular色。