我已经创建了一个存储过程作为具有管理员权限的用户并包括
WITH EXECUTE AS SELF
然后我试图用一个没有权限的用户执行存储过程,试图冒充管理员用户。
但它错误地返回说用户没有使用批量加载的权限。
反正围绕这个?
我已经创建了一个存储过程作为具有管理员权限的用户并包括
WITH EXECUTE AS SELF
然后我试图用一个没有权限的用户执行存储过程,试图冒充管理员用户。
但它错误地返回说用户没有使用批量加载的权限。
反正围绕这个?
您可以使用此查询来查找过程的“自我”主体的 ID:
select execute_as_principal_id
from sys.sql_modules
where object_id = object_id('YourProcedureName')
对我来说,这是null
大多数时候,这似乎不应该工作。试试这个:
WITH EXECUTE AS 'UserWhoHasAdminRights'
或作为 DBO 执行:
WITH EXECUTE AS OWNER
我想管理员用户可以执行 proc,对吧?
你能展示你是如何打电话的吗?
因为 EXECUTE AS SELF 意味着以用户调用 proc 的身份执行,所以你必须EXECUTE AS USER = 'user_with_permission'
在调用 proc 之前做一些事情