Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL2008_Administration.doc
Скачиваний:
90
Добавлен:
08.11.2018
Размер:
3.38 Mб
Скачать

4.4 Изменение контекста выполнения. Выражение Execute As

Изменение контекста выполнения команд Transact-SQL - возможность действовать от имени другого пользователя (разрешение IMPERSONATE).

4.4.1 Предоставление права impersonate

С помощью графического интерфейса:

Для того, чтобы одному пользователю БД (user1) предоставить право IMPERSONATE на объект другого пользователя БД (user2), необходимо:

  1. Открыть свойства первого пользователя (user1) в Management Studio и перейти на вкладку Securables;

  2. Нажать на кнопку Add под списком Securables, установить переключатель в положение All objects of the types... и нажать на кнопку OK;

  3. В списке типов объектов выбрать Users и нажать на кнопку OK;

  4. В загруженном списке пользователей выбрать второго пользователя (user2) и установить для него флажок в столбце Grant напротив разрешения IMPERSONATE.

С помощью команды GRANT:

Соответствующая команда Transact-SQL может выглядеть так:

GRANT IMPERSONATE ON USER::User2 TO User1

4.4.2 Изменение контекста выполнения

После предоставаления права IMPERSONATE можно использовать возможности выражения 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 AS используется в хранимой процедуре или функции, ему можно передать несколько зарезервированных значений, которые можно подставлять вместо имени пользователя:

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

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

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

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

EXECUTE AS LOGIN = 'Login2';

5. Резервное копирование и восстановление баз данных sql Server 2008

Факторы, которые нужно учитывать при принятии решения о том, как будет проводиться резервное копирование:

  • требования к скорости восстановления,

  • размер базы данных,

  • бюджет, который есть в вашем распоряжении,

  • требования к производительности и выбранные режим восстановления базы данных и т.п.

Что нельзя сделать стандартными средствами резервного копирования SQL Server 2008:

  • невозможно производить резервное копирование на удаленный стриммер;

  • если у вас несколько серверов SQL Server 2008, вы не сможете управлять процессом резервного копирования из единого центра: запускать резервное копирование придется на каждом сервере отдельно;

  • нет возможности шифровать резервную копию или производить сжатие помещаемых на резервную копию данных;

  • нет возможности производить резервное копирование отдельных объектов базы данных (только баз данных вместе или отдельных файлов данных и файловых групп);

  • нет возможности генерировать отчеты о проведения резервного копирования в пользовательском формате.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]