我在 Windows 7 机器上使用 SQL Server 2008 R2。我创建了一个存储过程来运行 SQL 命令EXECUTE AS USER
:
CREATE PROCEDURE dbo.ImpersonateUser
AS
BEGIN
EXECUTE AS USER = 'UserName';
END
然后,我试图看看我是否在冒充用户......
PRINT CURRENT_USER;
EXEC ImpersonateUser;
PRINT CURRENT_USER
......结果是......
dbo
dbo
...当我想要它时...
dbo
UserName
当然,这不起作用,因为该EXECUTE AS USER
语句仅在存储过程中有效ImpersonateUser
。 我的问题是:存储过程是否可能ImpersonateUser
影响调用上下文(会话)?我想在存储过程中封装(并隐藏)其他逻辑。