我在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权限。如果这里有什么不妥,请纠正我?