在SQL Server存储过程中执行

时间:2016-07-05 08:46:49

标签: sql-server execute-as

我在SQL Stored proc中使用Execute as user时遇到了一些问题。

我有两个用户叫做user1和user2 User1只能在TestDB中公开访问 User2在TestDB中具有执行权限 我已经创建了一个存储过程,如下所示:

USE TestDB

GO

CREATE PROCEDURE dbo.usp_Demo  
WITH EXECUTE AS 'User1'  
AS  
SELECT * FROM [dbo].[accounts] 

当我在User2的安全上下文中执行sproc时,如下所示

use TestDB 

go 

exec dbo.usp_demo 

它返回了[dbo].[accounts]的所有记录。我假设User1应该在[dbo]。[accounts]上选择权限以返回记录,但这里存储的proc返回结果。此外,调用者User2对表[dbo]。[accounts]没有SELECT权限。如果这里有什么不妥,请纠正我?

0 个答案:

没有答案