Выполнить как в хранимой процедуре SQL Server
У меня есть некоторые проблемы с использованием Execute в качестве пользователя в процедуре SQL Stored.
У меня есть два пользователя с именами user1 и user2.
Пользователь 1 имеет только публичный доступ в TestDB
Пользователь2 имеет права на выполнение в TestDB
Я создал хранимую процедуру, как показано ниже:
USE TestDB
GO
CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS 'User1'
AS
SELECT * FROM [dbo].[accounts]
когда я выполнил sproc в контексте безопасности User2, как показано ниже
use TestDB
go
exec dbo.usp_demo
он вернул все записи из [dbo].[accounts]
, Я предполагаю, что User1 должен иметь права SELECT для [dbo].[Account], чтобы возвращать записи, но здесь хранится процедура, возвращающая результаты. Также вызывающий пользователь User2 не имел разрешений SELECT для таблицы [dbo].[Accounts]. Поправьте меня, если здесь что-то не так?