2015-01-12 3 views
-1

У меня есть пользовательский ABC SQL, имеющий права sysadmin и доступ ко всем базам данных, скажем, базу данных A и базу данных B конкретного сервера. Где, когда мое приложение использует пользователей, имеющих доступ только к одной базе данных A. Я создал хранимую процедуру для вставки записей в таблицы базы данных B. Поэтому я использую предложение EXECUTE AS для выполнения хранимой процедуры с пользователем ABC, но после тестирования я обнаружил что, если у пользователей моего приложения нет точно таких же ролей сервера, как и у ABC, это не сработает. Когда я делаю свой другой sysadmin пользователя, он не дает ошибок и отлично работает. Если оба пользователя должны иметь одни и те же роли, то каков смысл этого предложения EXECUTE AS? Или я чего-то не хватает?SQL EXECUTE AS Раздел

+0

напишите свой код sql. невозможно сказать, что не так в вашей процедуре без кода. возможно, проблема с разрешением, но, возможно, нет. – Paolo

+0

Паоло, вопрос не с кодом процедуры, вопрос связан с разрешением, и я четко спрашиваю о проблеме разрешения. – elmo

ответ

0

Я думаю, что вы вопрос уже ответили здесь: SQL Server Execute Impersonation

выполняться как пользователь = «ABC» --The объем олицетворения ограничивается текущей базы данных.

против

выполнить в качестве логина = «ABC» --The сфера самозванства находится на уровне сервера.

+0

Хорошо, позвольте мне попробовать выполнить как login = 'ABC'. Я обновлю вас, если это поможет мне или нет. – elmo

+0

Я не могу добавить execute как login = 'ABC' с хранимыми процедурами, он дает ошибку. Ошибка - это неправильный синтаксис рядом с «login». Ниже мой код. 'Код' альтер процедура StoredProcedure с Execute, как логин - @r полукокса (15) вывода, как вставки в Table1 (ID, NAME) значения ('11' , 'Сэм') go'code» – elmo

Смежные вопросы