我在执行函数时遇到了问题。
以下是我所做的:
使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:
日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'
我在执行函数时遇到了问题。
以下是我所做的:
使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:
日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'
当前回答
我也遇到过同样的问题,我把db_owner权限也给了数据库用户。
其他回答
听起来,您需要为所讨论的存储过程向用户(或用户所属的组)授予执行权限。
例如,你可以这样授予访问权限:
USE zzzzzzz;
GRANT EXEC ON dbo.xxxxxxx TO PUBLIC
你需要运行这样的程序
GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]
如果您试图将权限授予用户或角色,则此操作将有效。
使用Microsoft SQL Server Management Studio:
转到:数据库 右键单击dbo.my_database 选择:属性 在左侧面板上,单击:Permissions 在“名称面板”中选择“用户”或“角色” 找到“在权限中执行”并选中标记:“授予”、“与授予一起”或“拒绝”
如果你只需要授予一个功能(只有db管理员可以做到):
开放式管理工作室 在Object Eplorer中查找要授予的函数/过程(dbname-Programmability-[函数/存储过程]-…) 右键单击函数或过程名称并打开属性 在“属性”中选择“权限”,添加您想要的用户(或模式)并授予他执行权限。
我相信这是最安全的方法,因为您只授予用户执行这个函数。别的什么也没有。
您没有执行它的权利,尽管您有足够的权限来创建它。
有关更多信息,请参阅授予对象权限(Transact-SQL)