Вопрос по контексту выполнения процедуры
От: sinvit  
Дата: 06.08.08 14:42
Оценка:
Вопрос по контексту выполнения процедуры в 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.

Можно ли вообще это сделать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.