我在执行函数时遇到了问题。
以下是我所做的:
使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:
日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'
我在执行函数时遇到了问题。
以下是我所做的:
使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:
日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'
当前回答
您没有执行它的权利,尽管您有足够的权限来创建它。
有关更多信息,请参阅授予对象权限(Transact-SQL)
其他回答
最好的解决方案,我发现是创建一个新的数据库角色,即。
CREATE ROLE db_executor;
然后授予角色执行权限。
GRANT EXECUTE TO db_executor;
现在,当您转到用户的属性并转到user Mapping并选择您添加了新角色的数据库时,现在新角色将在database role membership for:部分中可见
欲了解更多细节,请阅读全文
在SQL Server Management Studio中,进入“security->schema->dbo”:
双击dbo,选择权限页面,然后点击“查看数据库权限”蓝色链接:
选择您想要更改权限的用户,并在“explicit”选项卡下查找“Execute”权限:
通过选中相应的框来选择相应的权限。
如果您让这个用户对于特定的数据库是特殊的,那么在属性的“用户映射”中可能不会将其设置为db_owner
给予这样的权限可能是危险的,特别是如果您的web应用程序使用相同的用户名。
现在web用户(以及整个万维网)也有权限在数据库中创建和删除对象。想想SQL注入!
我建议将Execute权限仅授予给定对象上的特定用户,如下所示:
grant execute on storedProcedureNameNoquotes to myusernameNoquotes
现在用户myusernameNoquotes可以执行过程storedProcedureNameNoquotes,而无需对有价值的数据拥有其他不必要的权限。
您最好修改服务器角色,它是为安全特权而设计的。为您的用户添加系统管理员服务器角色。为了更好的安全性,您可以自定义服务器角色。但是这个方法会给你你现在想要的。
对象资源管理器->服务器->安全->登录 右键单击所需的用户 进入左边的服务器角色 确保选中sysadmin 点击OK并重新启动SQL服务器
祝你好运