我在执行函数时遇到了问题。
以下是我所做的:
使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:
日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'
我在执行函数时遇到了问题。
以下是我所做的:
使用SQL Server Management Studio创建一个函数。它被成功地创建了。 然后我尝试执行新创建的函数,下面是我得到的结果:
日志含义在日拒绝执行权限 对象'xxxxxxx',数据库 'zzzzzzz' schema 'dbo'
当前回答
你可以给每个人执行权限:
GRANT Execute on [dbo].your_object to [public]
“Public”是所有用户都属于的默认数据库角色。
其他回答
您最好修改服务器角色,它是为安全特权而设计的。为您的用户添加系统管理员服务器角色。为了更好的安全性,您可以自定义服务器角色。但是这个方法会给你你现在想要的。
对象资源管理器->服务器->安全->登录 右键单击所需的用户 进入左边的服务器角色 确保选中sysadmin 点击OK并重新启动SQL服务器
祝你好运
如果您试图将权限授予用户或角色,则此操作将有效。
使用Microsoft SQL Server Management Studio:
转到:数据库 右键单击dbo.my_database 选择:属性 在左侧面板上,单击:Permissions 在“名称面板”中选择“用户”或“角色” 找到“在权限中执行”并选中标记:“授予”、“与授予一起”或“拒绝”
以下是如何为一个非公开用户授予权限,
直接查询:
使用MyDatabase 授权执行[dbo]。[My-procedures-name] to [IIS APPPOOL\my-iis-pool] 去
这表明您无权对指定的数据库表执行任何操作。要启用此功能,请转到Security -> Schema并进行检查。
一般的答案是授予上面解释的执行权限。但是如果SP的模式所有者与底层对象不同,这就行不通了。
通过以下方法检查模式所有者:
select name, USER_NAME(s.principal_id) AS Schema_Owner from sys.schemas s
要更改模式的所有者,您可以:
ALTER AUTHORIZATION ON SCHEMA::YOUR_SCHEMA TO YOUR_USER;
例子:
ALTER AUTHORIZATION ON SCHEMA::Claim TO dbo
ALTER AUTHORIZATION ON SCHEMA::datix TO user1;
最后,如果在你的SP中,你要截断一个表或改变结构,你可能想在你的SP中添加WITH EXECUTE AS OWNER:
ALTER procedure [myProcedure]
WITH EXECUTE AS OWNER
as
truncate table etl.temp