我已经创建了一个存储过程,作为一个拥有管理员权限且包含
的用户WITH EXECUTE AS SELF
然后我尝试与没有权限的用户执行存储过程,尝试模拟管理员用户。
但它错误地说用户没有使用批量加载的权限。
无论如何围绕这个?
答案 0 :(得分:0)
您可以使用此查询来查找过程的“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
答案 1 :(得分:0)
我认为管理员用户可以执行proc,对吗?
你能说明你是怎么打电话的吗?
因为EXECUTE AS SELF意味着执行用户调用proc,所以在调用proc之前你必须做EXECUTE AS USER = 'user_with_permission'
之类的事情