Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_Laboratornyi_774_praktikum.doc
Скачиваний:
28
Добавлен:
17.06.2021
Размер:
921.09 Кб
Скачать

Insert into Заказ (КодКлиента, КодТовара, Количество)

VALUES (1, 555, 25)

GO

2. Создание представления базы данных. Синтаксис команды (см. [1], стр. 996):

CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::=     { ENCRYPTION | SCHEMABINDING | VIEW_METADATA }

CREATE VIEW Запрос1 AS

SELECT TOP 100 PERCENT Товар.Наименование, Заказ.Количество,

Товар.ЕдиницаИзм, Поставщик.ИмяПоставщика

FROM Заказ

Inner join Поставщик

ON Заказ.КодПоставщика = Поставщик.КодПоставщика

Inner join Товар

ON Заказ.КодТовара = Товар.КодТовара

ORDER BY Товар.Наименование, Заказ.Количество DESC GO

Раздел III. Управление пользователями и правами доступа к данным.

На панели Object Explorer откройте папку Security и выберите в ней строку Logins. При этом справа на панели Summary будет представлен список регистрационных записей SQL Server. Если среди них присутствуют регистрационные записи ИмяДомена\sql1, ИмяДомена\sql2, ИмяДомена\sql3, ИмяДомена\sql4, то поочередно выделите их и удалите, выбирая в контекстном меню команду Удалить.

1. Предоставление доступа к серверу учетной записи Windows NT. Синтаксис системной хранимой процедуры (см. [1], стр. 212):

sp_grantlogin [@loginame =] 'login'

-- ИмяДомена замените конкретным именем (домена или локального компьютера)

EXEC sp_grantlogin 'ИмяДомена\sql1'

EXEC sp_grantlogin 'ИмяДомена\sql2'

EXEC sp_grantlogin 'ИмяДомена\sql3'

EXEC sp_grantlogin 'ИмяДомена\sql4'

GO

Отмена доступа к серверу учетной записи выполняется с помощью хранимой процедуры sp_droplogin, имеющей синтаксис:

sp_droplogin [ @loginame = ] 'login'

2. Добавление учетной записи в фиксированную роль сервера. Синтаксис системной хранимой процедуры (см. [1], стр. 223):

sp_addsrvrolemember [ @loginame = ] 'login'     , [ @rolename = ] 'role'

EXEC sp_addsrvrolemember 'ИмяДомена\sql1', 'dbcreator'

GO

Удаление учетной записи из фиксированной роли сервера выполняется с помощью хранимой процедуры sp_dropsrvrolemember, имеющей синтаксис (см. [1], стр. 224):

sp_dropsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role'

3. Создание нового пользователя и связывание его с учетной записью. Синтаксис системной хранимой процедуры (см. [1], стр. 231):

sp_grantdbaccess [@loginame =] 'login'     [,[@name_in_db =] 'name_in_db' [OUTPUT]]

EXEC sp_grantdbaccess 'ИмяДомена\sql1', 'sql1'

EXEC sp_grantdbaccess 'ИмяДомена\sql2', 'sql2'

EXEC sp_grantdbaccess 'ИмяДомена\sql3', 'sql3'

EXEC sp_grantdbaccess 'ИмяДомена\sql4', 'sql4'

GO

Удаление пользователя выполняется с помощью системной хранимой процедуры, имеющей синтаксис (см. [1], стр. 232):

sp_revokedbaccess [ @name_in_db = ] 'name'

4. Создание пользовательской роли. Синтаксис системной хранимой процедуры (см. [1], стр. 240; [2]):

sp_addrole [ @rolename = ] 'role'     [ , [ @ownername = ] 'owner' ]

EXEC sp_addrole 'Гл.бухгалтер', 'sql1'

EXEC sp_addrole 'Бухгалтера', 'sql1'

EXEC sp_addrole 'Экономисты', 'sql1'

GO

Удаление пользовательской роли выполняется с помощью системной хранимой процедуры, имеющей синтаксис (см. [1], стр. 242):

sp_droprole [ @rolename = ] 'role'

5. Добавление нового члена в роль (как фиксированную, так и пользовательскую) базы данных. Синтаксис системной хранимой процедуры (см. [1], стр. 236):

sp_addrolemember [ @rolename = ] 'role' ,     [ @membername = ] 'security_account'

EXEC sp_addrolemember 'db_accessadmin', 'sql1'

EXEC sp_addrolemember 'Гл.бухгалтер', 'sql1'

EXEC sp_addrolemember 'Бухгалтера', 'sql2'

EXEC sp_addrolemember 'Бухгалтера', 'sql3'

EXEC sp_addrolemember 'Бухгалтера', 'Гл.бухгалтер'

EXEC sp_addrolemember 'Экономисты', 'sql4'

EXEC sp_addrolemember 'Экономисты', 'Гл.бухгалтер'

GO

Исключение члена из роли выполняется с помощью системной хранимой процедуры, имеющей синтаксис (см. [1], стр. 237):

sp_droprolemember [ @rolename = ] 'role' ,     [ @membername = ] 'security_account'

6. Предоставление привилегий доступа к объектам базы данных. Синтаксис системной хранимой процедуры (см. [1], стр. 254):

GRANT     { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( column [ ,...n ] ) ] ON { table | view }         | ON { table | view } [ ( column [ ,...n ] ) ]         | ON { stored_procedure | extended_procedure }         | ON { user_defined_function }     } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]

GRANT SELECT, INSERT, UPDATE, DELETE

ON Валюта TO [Гл.бухгалтер] WITH GRANT OPTION

GRANT UPDATE

ON Заказ TO [Гл.бухгалтер] WITH GRANT OPTION

GRANT SELECT

ON Запрос1 TO [Гл.бухгалтер] WITH GRANT OPTION

GRANT UPDATE, DELETE

ON Клиент TO [Гл.бухгалтер] WITH GRANT OPTION

GRANT UPDATE, DELETE

ON Поставщик TO [Гл.бухгалтер] WITH GRANT OPTION

GRANT UPDATE, DELETE

ON Товар TO [Гл.бухгалтер] WITH GRANT OPTION

GRANT SELECT, INSERT

ON Заказ TO Бухгалтера

GRANT SELECT, INSERT

ON Клиент TO Бухгалтера

GRANT SELECT, INSERT

ON Поставщик TO Экономисты

GRANT SELECT, INSERT

ON Товар TO Экономисты

GRANT SELECT, INSERT, UPDATE, DELETE

ON Регион TO public GO

Примечание. С помощью ключевых слов WITH GRANT OPTION пользователям, указанным с помощью строки TO security_account [ ,...n ] будет предоставлено право выдавать другим пользователям разрешения доступа, аналогичные выданным им самим.

7. Запрещение доступа к объектам базы данных. Синтаксис системной хранимой процедуры (см. [1], стр. 258):

DENY     { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( column [ ,...n ] ) ] ON { table | view }         | ON { table | view } [ ( column [ ,...n ] ) ]         | ON { stored_procedure | extended_procedure }         | ON { user_defined_function }     } TO security_account [ ,...n ] [ CASCADE ]

DENY UPDATE

ON Заказ (ДатаЗаказа, СрокПоставки) TO [Гл.бухгалтер] CASCADE

GO

Примечание. Кроме предоставления и запрещения прав доступа существует еще и третье состояние – неявное отклонение доступа. Его можно рассматривать как отмену ранее выданных полномочий как по предоставлению, так и запрету доступа. Если ранее пользователю не было выдано никаких полномочий к объекту, то выполнять неявное отклонение доступа бессмысленно, т.к. оно установлено по умолчанию. Неявное отклонение доступа не мешает получить доступ к объекту на другом уровне, например, через членство в некоторой роли. Для неявного отклонения доступа используется команда REVOKE, имеющая следующий синтаксис (см. [1], стр. 259):

REVOKE [ GRANT OPTION FOR ]     { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( column [ ,...n ] ) ] ON { table | view }         | ON { table | view } [ ( column [ ,...n ] ) ]         | ON { stored_procedure | extended_procedure }         | ON { user_defined_function }     } { TO | FROM }     security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ]