执行存储过程作为另一个用户权限

Stu*_*ens 20 sql-server permissions sql-server-2005

我遇到了以下问题:有一个用户必须执行存储过程(spTest).在spTest的主体中调用sp_trace_generateevent.sp_trace_generateevent需要更改跟踪权限,我不希望用户拥有它.所以我希望用户能够执行spTest.我怎样才能做到这一点?

KM.*_*KM. 29

试试这个:

EXECUTE AS user = 'special_user'

EXECUTE YourProcerdure

REVERT
Run Code Online (Sandbox Code Playgroud)

请参阅以下内容:
了解上下文切换 <<<has examples of things like you are trying to do
了解执行上下文
EXECUTE AS子句(Transact-SQL)
EXECUTE AS(Transact-SQL)

  • 来自:http://msdn.microsoft.com/en-us/library/ms181362.aspx EXECUTE AS &lt;context_specation&gt; 中指定的用户或登录名必须分别作为主体存在于 sys.database_principals 或 sys.server_principals 中,或者EXECUTE AS 语句失败。此外,必须向主体授予 IMPERSONATE 权限。除非调用者是数据库所有者,或者是 sysadmin 固定服务器角色的成员,否则即使用户通过 Windows 组成员身份访问数据库或 SQL Server 实例,主体也必须存在。 (2认同)