Нормальные формы


GRANT IMPERSONATE ON USER::User2 TO User1



жүктеу 4,63 Mb.
бет71/72
Дата11.02.2023
өлшемі4,63 Mb.
#41261
түріУчебное пособие
1   ...   64   65   66   67   68   69   70   71   72
Копия Теория баз данных

GRANT IMPERSONATE ON USER::User2 TO User1;

После этого можно использовать возможности выражения EXECUTE AS, например, так:


-- Переключаемся в контекст выполнения User2
EXECUTE AS USER = 'User2';
-- Обращаемся к таблице Table2
SELECT * FROM dbo.Table2;
-- Возвращаемся в контекст выполнения User1
REVERT;
Чаще всего выражение EXECUTE AS используется в определениях программных модулей Transact-SQL (процедур или функций). Это позволяет менять контекст выполнения только на время работы данной хранимой процедуры или функции, например:


CREATE PROCEDURE SelectFromTable2
WITH EXECUTE AS 'User2'
AS SELECT * FROM dbo.Table2;

Если у пользователя есть право EXECUTE на хранимую процедуру SelectFromTable2, он может выполнять ее от имени пользователя User2.


В такой ситуации проще бы было сделать так, чтобы владельцем хранимой процедуры и таблицы был один и тот же пользователь, тогда вам не нужно будет прибегать к таким приемам, но это возможно не всегда.
Если вы используете выражение EXECUTE AS в хранимых процедурах и функциях, ему можно передать несколько зарезервированных значений, которые подставляются вместо имени пользователя:

  • EXECUTE AS CALLER — все команды в хранимой процедуре или функции будут выполнены с правами текущего пользователя (при этом неважно, кто является владельцем этой хранимой процедуры или функции);

  • EXECUTE AS SELF — все команды в хранимой процедуре или функции будут выполняться от имени пользователя, который создает или изменяет данную процедуру или функцию. Это значение используется в редких случаях, когда клиентскому приложению требуется создавать хранимые процедуры или функции и запускать их от имени разных пользователей;

  • EXECUTE AS OWNER — все команды хранимой процедуры или функции будут выполняться от имени ее текущего владельца. Это значение тоже используется редко: обычно только в тех ситуациях, когда владелец хранимой процедуры или функции может часто меняться.

Выражение EXECUTE AS можно использовать не только для изменения контекста выполнения на уровне базы данных, но и на уровне сервера (т. е. логинов). Для этого ключевое слово USER меняется на LOGIN, например:



жүктеу 4,63 Mb.

Достарыңызбен бөлісу:
1   ...   64   65   66   67   68   69   70   71   72




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау