EXECUTE AS和OPENROWSET bulkload

时间:2012-04-12 10:47:58

标签: sql sql-server sql-server-2008

我已经创建了一个存储过程,作为一个拥有管理员权限且包含

的用户
WITH EXECUTE AS SELF 

然后我尝试与没有权限的用户执行存储过程,尝试模拟管理员用户。

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

无论如何围绕这个?

2 个答案:

答案 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'之类的事情