0

我已经创建了一个存储过程作为具有管理员权限的用户并包括

WITH EXECUTE AS SELF 

然后我试图用一个没有权限的用户执行存储过程,试图冒充管理员用户。

但它错误地返回说用户没有使用批量加载的权限。

反正围绕这个?

4

2 回答 2

0

您可以使用此查询来查找过程的“自我”主体的 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
于 2012-04-12T10:52:36.957 回答
0

我想管理员用户可以执行 proc,对吧?

你能展示你是如何打电话的吗?

因为 EXECUTE AS SELF 意味着以用户调用 proc 的身份执行,所以你必须EXECUTE AS USER = 'user_with_permission'在调用 proc 之前做一些事情

于 2012-04-12T10:56:06.843 回答