Вопрос по контексту выполнения процедуры в Sql Server 2005.
Есть два пользователя: u1, u2 (с правами db_owner).
Есть привязанные к этим пользователям две схемы: su1 и su2.
Есть две таблицы: su1.T и su2.T.
Написал процедуру:
CREATE PROCEDURE Proba
WITH EXECUTE AS CALLER
AS
BEGIN
select * from T
END
Вызываю ее следующим образом:
EXECUTE AS USER = 'u1';
execute Proba;
REVERT;
Выводится сообщение:
Msg 208, Level 16, State 1, Procedure pProba, Line 13
Недопустимое имя объекта "T".
Такой код выполняется на ура:
EXECUTE AS USER = 'u1';
select * from T
REVERT;
EXECUTE AS USER = 'u2';
select * from T
REVERT;
Т.е. задача в дальнейшем вызывать процедуру и она должна выполнятся в зависимости от пользователя в нужном контексте и использовать или таблицу su1.T и su2.T.