Для создания новой определяемой пользователем роли базы данных в текущей базе данных применяется инструкцияCREATEROLE. Синтаксис этой инструкции выглядит таким образом:
CREATE ROLE role_name [AUTHORIZATION owner_name]
В параметре role_name инструкции указывается имя создаваемой определяемой пользователем роли, а в параметре owner_name – пользователь базы данных или роль, которая будет владельцем новой роли. (Если пользователь не указан, владельцем роли будет пользователь, исполняющий инструкцию CREATE ROLE.)
Для изменения имени определяемой пользователем роли базы данных применяется инструкция ALTER ROLE, а для удаления роли из базы данных – инструкцияDROPROLE. Роль, которая является владельцем защищаемых объектов (т.е. объектов базы данных), удалить нельзя. Чтобы удалить такую роль, сначала нужно изменить владельца этих объектов. [8]
В примере ниже показано создание определяемой пользователем роли базы данных и добавление в нее членов:
USE SampleDb;
CREATE ROLE marketing AUTHORIZATION Vasya;
GO
ALTER ROLE marketing ADD MEMBER 'Vasya';
ALTER ROLE marketing ADD MEMBER 'ProfessorWeb\Alexandr';
В этом примере сначала создается определяемая пользователем роль базы данных marketing, а затем, предложением ADD MEMBER инструкции ALTER ROLE, в нее добавляются два члена – Vasya и ProfessorWeb\Alexandr.
Авторизация пользователей
Выполнять инструкции или осуществлять операции с объектами баз данных могут только авторизованные пользователи. Попытка выполнения любой из этих задач неавторизованным пользователем будет неудачной. Для выполнения задач, связанных с авторизацией, используются следующие три инструкции языка Transact-SQL: GRANT, DENY и REVOKE. [8]
Инструкция GRANT
ИнструкцияGRANTпредоставляет разрешения принципалам на защищаемые объекты. Эта инструкция имеет следующий синтаксис:
GRANT {ALL [PRIVILEGES]} | permission_list
[ON [class::] securable] TO principal_list [WITH GRANT OPTION] [AS principal ]
Предложение ALL означает, что указанному принципалу предоставляются все применимые к указанному защищаемому объекту разрешения. В параметре permission_list указываются разрешаемые инструкции или объекты (разделенные запятыми), а в параметре class – класс или имя защищаемого объекта, для которого предоставляются разрешения. Предложение on securable указывает защищаемый объект, на который предоставляется разрешение. В параметре prinicpal_list перечисляются все учетные записи (разделенные запятыми), которым предоставляются разрешения. Параметр principal и составляющие списка principal_list могут быть учетной записью пользователя Windows, регистрационным именем или учетной записью пользователя, сопоставленной с сертификатом, регистрационным именем, сопоставленным с асимметричным ключом, пользователем базы данных, ролью базы данных или ролью приложения.
В таблице 5 ниже приводятся разрешения и защищаемые объекты, к которым они применяются, а также краткое описание предоставляемых каждым разрешением возможностей:
Таблица 5 Разрешения и соответствующие защищаемые объекты