Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы программирования..pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
10.32 Mб
Скачать

GRANT SELECT, INSERT ON T1 TO MY.ROLE;

GRANT MY.ROLE TO USER1;

Команда SET ROLE. Эта команда позволяет назначить пользователю, под­ ключенному к БД, определенную роль. При этом, разумеется, происходит из­ менение его привилегий. Директива имеет следующий синтаксис:

SET ROLE ИМЯ.РОЛИ;

Например:

SET ROLE MY_ROLE;

В некоторых СУБД установленные таким образом права пользовате­ лей автоматически становятся ролями по умолчанию, которые назначаются пользователю при входе в систему.

Команда DROP ROLE. Команда позволяет удалить указанную роль со все­ ми вытекающими из этого последствиями, имеет следующий синтаксис:

DROP ROLE ИМЯ.РОЛИ;

Например:

DROP ROLE MY_ROLE;

5.3. Пользователи

Пользователь, подключающийся к Microsoft SQL Server, должен иденти­ фицировать себя, используя существующую учетную запись. Такой учетной записью может быть учетная запись Windows, группа записей Windows NT или учетная запись Microsoft SQL Server (детальная информация обо всех поль­ зователях БД хранится в системной таблице sysusers). Каждая учетная запись ассоциируется с пользователем и конкретной БД. При этом пользователи вы­ ступают в качестве функциональных объектов БД.

В командной строке SQL связывание учетной записи (login) с именем пользователя выглядит следующим образом:

sp_adduser ’login’ [,’user_in_DB’( ’role’]

Для авторизации Windows NT следует использовать процедуру sp_ grantdbaccess.

1 Security

^

ill db

Logins

^

O R Users

В случае создания объекта БД обращение к нему осуществляется по правилу:

1.Объект ищется в схеме пользователя, в которой выполняется команда;

2.Если объект не найден, то происходит его поиск в схеме “dbo”. Владелец любого объекта имеет к нему полный (неявно!) доступ. Если

требуется разрешить другим пользователям выполнять над объектом ка­ кие-либо действия, то следует наделить их привилегиями (явно!). В слу­

2 - разрешено (средний приоритет); - - не указано (низкий приоритет).

Реальный уровень доступа к объектам БД обычно является логической комбинацией матрицы доступа пользователя и матрицы доступа роли. Та­ ким образом, доступ к объекту может быть получен индивидуально или через членство в группах.

Влюбом случае, доступ к объекту (явный) разрешается, только если

влогическом выражении есть «хотя бы одно разрешение» и нет «ни одного запрета» по отношению к выбранному объекту. Владелец объекта (неявный доступ) может выполнять с ним любые операции. В результате можно сформи­ ровать 4 категории привилегий пользователей:

1.Права на подключение к серверу (первый уровень);

2.Права подключения к БД (второй уровень);

3.Привилегии доступа к объектам БД (третий уровень);

4.Права делиться полномочиями над объектами БД (высший уровень).

Вмомент создания любого пользователя БД происходит автоматическое занесение его учетной записи в роль «public».

5.6. Командные манипуляции с БД

По очевидным причинам создание БД с помощью директивы CREATE DATABASE очень проблематично, так как требует перечисления огромно­ го количества параметров, неточное или ошибочное указание которых при­ водит к серии проблемных ситуаций. Поэтому настоятельно рекомендует­ ся выполнять все наиболее ответственные (разовые) команды с помощью Enterprise Manager в визуальном режиме.

Основные манипуляции, связанные с изменением наименования, разме­ ра и положения файлов БД (с версии Microsoft SQL Server 2000 появляется возможность усечения БД и журнала транзакций), выполняются с помощью директивы:

ALTER DATABASE DB_name... параметры ...

(полный синтаксис конструкции очень сложен и объемен).

В ряде случаев рекомендуется пользоваться следующими специальными функциями. Передача прав владения БД возможна только из командной строки SQL и только в рамках БД, владелец которой должен быть изменен. Например:

USE DB_name sp_changedbowner ’Administrator’

Переименование БД возможно только из строки SQL: sp_renamedb ’старое_имя_БД’, ’новое_имя_БД’

Удаление БД происходит либо визуально средствами Enterprise Manager, либо директивой SQL:

DROP DATABASE ’имя_БД’