Запуск Sql Server хранится в контексте вызывающей стороны - PullRequest
4 голосов
/ 19 мая 2009

Это сводит меня с ума, и я уверен, что ответ так прост.

У меня есть несколько схем, каждая из которых имеет вид с именем «Задача». Я хочу создать один сохраненный процесс, чтобы пользователи, работающие в нескольких схемах по умолчанию, могли успешно выполняться - этот сохраненный процесс делает выбор в представлении задач.

Так скажи, у меня есть следующие объекты:

View: fr.Task (пользователи со схемой по умолчанию 'fr' получают это, если они просто набирают "select * from Task") Просмотр: de.Task (то же самое, но для пользователей со схемой по умолчанию 'de')

StoredProc: dbo.MyProc - все пользователи имеют разрешения на выполнение. Процесс просто:

select count(*) from Task 

Теперь я ожидал (и я хочу), что если бы пользователь со схемой по умолчанию 'fr' сделал

exec dbo.MyProc

Тогда они получат количество строк из представления fr.Task. Но вместо этого они получают ошибку «Неверное имя объекта« Задача ».

Разве невозможно создать общий хранимый процесс, который будет выполнять выборку в схеме работающего пользователя?

Thx, Билл

Ответы [ 3 ]

3 голосов
/ 19 мая 2009

Для запуска хранимой процедуры в контексте CALLER вы можете использовать предложение Execute As, однако я подозреваю, что это не совсем то, что вы хотите сделать.

http://msdn.microsoft.com/en-us/library/ms188354.aspx

0 голосов
/ 26 июня 2018

"Разве невозможно создать общий хранимый процесс, который будет выполнять выборку в схеме работающего пользователя?" Ответ "НЕТ"

default_schema берется из местоположения хранимой_процедуры

create procedure fr.MyProc as select * from Task
create procedure de.MyProc as select * from Task

вернет в первом случае fr.Task-Table, а во втором случае de.Task-Table. Неважно, какая default_schema у вызывающего абонента

0 голосов
/ 06 мая 2010

Использовать динамический SQL, т. Е. Exec («выбрать количество (*) из задачи»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...