SQL Server securityadmin角色用户执行存储过程权限异常排查
SQL Server 2019存储过程权限问题排查
一、登录创建的权限限制
securityadmin服务器角色虽能管理登录,但默认无权限创建Windows登录(除非用户本身拥有Windows系统级权限),也不能在创建SQL登录时使用CHECK_POLICY = OFF这类需高权限的参数——只有sysadmin角色具备完全的登录创建权限。若存储过程包含这类操作,securityadmin角色用户执行时必然失败。
二、数据库用户与角色添加的权限缺失
- 自定义的
udr_UserAdmin数据库角色若未被明确授予CREATE USER权限,用户无法在数据库内创建用户。 - 将用户添加到
db_securityadmin数据库角色,仅sysadmin或db_owner角色成员可执行,securityadmin+自定义角色的组合无此权限。 - 同理,把用户添加到
securityadmin服务器角色是sysadmin独有权限,securityadmin角色自身没有资格执行该操作。
三、存储过程执行上下文的问题
- 若存储过程未设置
EXECUTE AS OWNER或指定使用sysadmin账户执行,调用时会沿用当前用户的权限,而非存储过程创建者的权限。服务器管理员用sysadmin权限执行可完成所有操作,但普通用户的权限组合无法覆盖存储过程内的全部步骤。
四、服务器与数据库角色的权限范围混淆
securityadmin是服务器级角色,仅负责服务器登录的权限管理,不直接赋予数据库内的操作权限;自定义的udr_UserAdmin角色必须明确授予ALTER ANY USER、ALTER ROLE等数据库权限,才能执行对应的用户和角色管理操作。
内容的提问来源于stack exchange,提问作者Katerine459
相关产品推荐
相关产品推荐

