Создание баз данных. Основы Transact SQL. Обработка ошибок. Управление транзакциями. Триггеры

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

?ожность вносить любые изменения в свойства объекта (за исключением смены владельца).- тот, кому предоставлено такое разрешение, получает полные права как на сам объект, так и на информацию в нем.- возможность удалять существующую информацию в таблицах. Применяется к таблицам, представлениям и столбцам.- право запускать на выполнение. Применяется к хранимым процедурам и функциям.- право на вставку новых данных в таблицы. Применяется к таблицам, представлениям и столбцам.- разрешение, которое можно предоставить для проверки ограничений целостности. Например, пользователь может добавлять данные в таблицу с внешним ключом, а на таблицу с первичным ключом ему нельзя предоставлять права на просмотр. В этом случае на таблицу с первичным ключом ему можно предоставить право REFERENCES - и он сможет производить вставку данных в таблицу с внешним ключом, не получая лишних прав на главную таблицу. Это разрешение можно предоставлять на таблицы, представления, столбцы и функции.- право на чтение информации. Предоставляется для таблиц, представлений, столбцов и табличных функций.OWNERSHIP - право на принятие на себя владения данным объектом. Владелец автоматически обладает полными правами на свой объект. Такое право можно назначить для любых объектов.- возможность вносить изменения в существующие записи в таблице. Предоставляется на таблицы, представления и столбцы.DEFINITION - право на просмотр определения для данного объекта. Предусмотрено для таблиц, представлений, процедур и функций.

Для каждого разрешения мы можем установить три значения:- разрешение предоставлено явно;GRANT - разрешение не только предоставлено данному пользователю, но он также получил право предоставлять это разрешение другим пользователям. Можно предоставлять, конечно, только вместе с GRANT;- явный запрет на выполнение действия, определенного данным разрешением. Как в любых системах безопасности, явный запрет имеет приоритет перед явно предоставленными разрешениями.

Из кода Transact-SQL разрешения можно предоставлять командами GRANT, DENY и REVOKE. Например, чтобы предоставить пользователю User1 возможность просматривать данные в таблице Table1 в схеме dbo, можно воспользоваться командой: GRANT SELECT ON dbo.Table1 TO User1;

Лишить его ранее предоставленного права можно при помощи команды: REVOKE SELECT ON dbo.Table1 TO User1;

Некоторые рекомендации, связанные с предоставлением разрешений:

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

Существует общий принцип: не стоит обращаться из клиентского приложения к таблицам базы данных напрямую. Для изменения данных лучше использовать хранимые процедуры, а для запросов на чтение - хранимые процедуры или представления. Причина проста: если потребуется поменять структуру вашей базы данных (например, какую-то таблицу поделить на текущую и архивную или добавить новый столбец) не потребуется вносить изменения в клиентское приложение. Это следует помнить и при предоставлении разрешений. Отметим также, что при помощи хранимых процедур можно очень просто реализовать дополнительные проверки в добавление к обычным разрешениям;Server позволяет настраивать разрешения на уровне отдельных столбцов. На практике лучше не пользоваться такими разрешениями из-за падения производительности и усложнения системы разрешений. Если пользователю можно видеть не все столбцы в таблице (например, ему не нужны домашние телефоны сотрудников), то правильнее будет создать представление или хранимую процедуру, которые будут отфильтровывать ненужные столбцы.

Задание для самостоятельной работы:

Создайте логин SQL Server Admin и назначьте ей роль sysadmin;

Создайте в базе данных роль Saler и назначьте ей разрешения на выборку данных из всех таблиц, изменение данных в таблицах Order, OrdItem и запуск хранимой процедуры spr_getOrders;

Создайте логин SQL Server Ivanov и сопоставьте его с одноименным пользователем в базе данных Sales. Назначьте созданному пользователю роль Saler.