我在 SQL 存储过程中使用 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] 上具有 SELECT 权限以返回记录,但这里存储的 proc 返回结果。此外,调用者 User2 对表 [dbo].[accounts] 没有 SELECT 权限。如果这里有什么问题,请纠正我?