Выполнить как в хранимой процедуре 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]. Поправьте меня, если здесь что-то не так?

0 ответов

Другие вопросы по тегам