Witajcie.
Sprawa wygląda tak.
Mam procedurę
CREATE PROCEDURE YYY.PROC_1]
@ID int = NULL,
@ODP int OUTPUT
WITH EXECUTE AS 'proces'
AS
BEGIN
....
EXECUTE ZZZ.PROC_2 @ID;
SET @ODP = 1
....
END
Użytkownik "proces" ma pełne uprawnienia do bazy danych.
Użytkownik "user" ma ograniczone prawa do bazy danych (tylko możliwość wykonania procedury YYY.PROC_1).
Procedura ZZZ.PROC_2 wykonuje działania na innych tabelach bazy danych oraz wywołuje inne procedury w bazie.
Wywołanie procedury YYY.PROC_1 z poziomu Management Studio będąc zalogowanym jako "proces" i po zakomentowaniu "WITH EXECUTE AS 'proces'" poprawnie wykonuje procedurę.
Wywołanie procedury YYY.PROC_1 z poziomu Management Studio będąc zalogowanym jako "user" z odkomentowanym "WITH EXECUTE AS 'proces'" powoduje nie wykonanie procedury YYY.PROC_1. Wykonanie zgłasza błąd przy wykonaniu procedury EXECUTE ZZZ.PROC_2 @ID; związany z brakiem uprawnień.
Wygląda to tak jakby procedura ZZZ.PROC_2 była wywołana z uprawnieniami "user" lub jakby instrukcje zawarte w procedurze ZZZ.PROC_2 cofały uprawnienia z "proces" do "user" i z uprawnieniami "user" próbowały wykonać działanie.
Jak mogę rozwiązać powstały problem.
Pozdrawiam i dziękuję za pomoc.