13. Введите по несколько строк данных сначала в таблицы Валюта и Регион, а затем в таблицы Товар, Поставщик и Клиент. После этого введите не менее 10 строк данных в таблицу Заказ.
Примечание. Для ввода данных в таблицу нужно в ее контекстном меню выбрать команду Open Table.
14. Создайте представление (View) на основе столбцов, описание которых приведено ниже.
Столбец |
Таблица |
Сортировка |
Наименование Количество ЕдиницаИзм ИмяПоставщика |
Товар Заказ Товар Поставщик |
По возрастанию По убыванию
|
Примечание. Для создания представления нужно в контекстном меню папки Views выбрать команду New View. Далее необходимо указать нужные таблицы и затем в появившемся окне конструктора представлений, путем расстановки флажков в выбранных таблицах, отобрать нужные поля. Затем для двух из них нужно указать тип сортировки.
Сохраните созданное представление под именем Запрос1, после чего закройте окно конструктора.
15. Откройте и просмотрите на экране данные, выбираемые посредством представления Запрос1. Для этого в его контекстном меню выберите команду Open View.
16. Отсоедините базу данных СкладХХХ, выбрав в ее контекстном меню команду Tasks►Detach Database. Убедитесь, что база данных СкладХХХ исчезла из папки Databases. Теперь файлы этой базы данных можно, при необходимости, переместить в другую папку на жестком диске или копировать на другой носитель данных.
Примечание. Чтобы снова начать работать с базой данных СкладХХХ, нужно выполнить операцию ее присоединения. Для этого нужно в контекстном меню папки Databases выбрать команду Atach Database, затем в появившемся окне нажать кнопку Append и далее указать местоположение первичного файла данных (т.е. файла данных с расширением .mdf).
17. На панели Registered Servers переместите SQL-сервер с именем ИмяКомпьютера\sqlexpress в корневую папку для серверных групп, после чего удалите созданную вами серверную группу Minsk DB - Version 2005.
18. Закройте утилиту SQL Server Management Studio.
5. Для базы данных СкладХХХ создайте три пользовательские роли (на уровне роли можно легко менять привилегии пользователей-членов роли). Для этого в контекстном меню папки Roles базы данных СкладХХХ, выберите команду New►New Database Role и откройте окно Database Role - New. Затем введите в поле Role name имя новой роли как Гл.бухгалтер, а в поле Owner (владелец) – значение dbo. Далее нажмите кнопку Add, затем Browse и установите флажок в строке ИмяДомена\sql1, завершая выбор двумя нажатиями кнопки ОК. После этого закройте окно Database Role - New также с помощью кнопки ОК.
Аналогичным образом создайте пользовательскую роль с именем Бухгалтера, проставляя флажки в строках ИмяДомена\sql2, ИмяДомена\sql3 и Гл.бухгалтер.
Далее создайте пользовательскую роль с именем Экономисты, проставляя флажки в строках ИмяДомена\sql4 и Гл.бухгалтер.
Примечание1. В SQL Server любой отдельный пользователь (представляющий, в свою очередь, одного или группу пользователей Windows), а также любая отдельная роль может входить в состав нескольких ролей. В свою очередь каждая роль может включать в качестве своих членов несколько пользователей и ролей. В результате пользователи наследуют привилегии, установленные во всех ролях, в которые они входят (прямо, либо косвенно через другие роли).
В нашем случае пользователь ИмяДомена\sql1, помимо привилегий роли Гл.бухгалтер, будет обладать также привилегиями ролей Бухгалтера и Экономисты, в то время как пользователи ИмяДомена\sql2 и ИмяДомена\sql3 будут обладать только привилегиями роли Бухгалтера, а пользователь ИмяДомена\sql4 – только привилегиями роли Экономисты.
Примечание2. В любой базе данных автоматически создается пользователь с именем dbo (database owner), являющийся ее владельцем, также как и все члены фиксированной роли базы данных db_owner. Пользователь dbo имеет абсолютные права по управлению базой данных и его нельзя удалить. Кроме того, пользователь dbo включен в роль db_owner и не может быть удален из нее.
Примечание3. Имеется фиксированная роль базы данных public со специальными функциями. В эту роль нельзя включать пользователей, т.к. любой пользователь, созданный в базе данных, автоматически включается в роль public, и нет никакой возможности исключить его из этой роли. Роль public предназначена для предоставления привилегий по умолчанию всем пользователям, имеющим доступ к данной базе данных.
6. Задайте привилегии для пользовательских ролей базы данных СкладХХХ. Для этого в контекстном меню роли Гл.бухгалтер выберите команду Properties (Свойства) и откройте окно Database Role Properties – Гл.бухгалтер, в котором перейдите на страницу Permissions (Привилегии). Затем с помощью кнопки Add Objects выберите схему dbo (при помощи выпадающего списка), заполнив тем самым таблицу Objects, расположенную в верхней части окна.
В таблице, расположенной в нижней части окна, выполните следующие установки.
Для таблицы Валюта установите привилегии Select(просмотр), Insert(вставка), Update(обновление), Delete(удаление). Для таблицы Заказ установите привилегию Update, а для представления Запрос1 - привилегию Select. Для каждой из таблиц Клиент, Поставщик, Товар установите привилегии Update и Delete. Далее, выбрав таблицу Заказ, нажмите кнопку Column Permissions и в появившемся окне запретите привилегию Update для столбцов ДатаЗаказа и СрокПоставки.
По аналогии задайте привилегии для других пользовательских ролей.
Для роли Бухгалтера каждая из таблиц Заказ, Клиент должна иметь привилегии Select и Insert.
Для роли Экономисты каждая из таблиц Поставщик, Товар должна иметь привилегии Select и Insert.
Кроме того, для роли public таблица Регион должна иметь привилегии Select, Insert, Update, Delete.
Примечание. Запрещение привилегии имеет более высокий приоритет, чем предоставление привилегии. Если пользователю запрещена привилегия на доступ к тому или иному объекту, то система безопасности SQL Server гарантирует, что пользователь не будет иметь ее, даже если она была предоставлена ему через членство в любой другой роли базы данных или группе пользователей Windows.
7. Завершите сеанс работы с операционной системой Windows под учетной записью stud223 и стартуйте сеанс под учетной записью sql1 (пароль sql1).
При помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio.
В этом случае будем говорить, что установлено соединение c сервером базы данных от имени пользователя с учетной записью sql1.
Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, обладаете привилегиями роли Гл.бухгалтер, т.е. вы можете выполнять все действия с таблицами Валюта, Клиент, Поставщик, Регион, Товар, а также все действия с таблицей Заказ за исключением удаления строк и обновления полей ДатаЗаказа и СрокПоставки. Также можно просматривать данные представления Запрос1.
Примечание. Ряд привилегий оказываются доступнымм благодаря членству роли Гл.бухгалтер в ролях Бухгалтера, Экономисты и public.
Кроме того, поскольку данная учетная запись является членом фиксированной роли сервера dbcreators, то предоставлено право создавать новые базы данных и их объекты.
Также предоставлено право управлять добавлением или удалением пользователей в базе данных СкладХХХ, поскольку данная учетная запись включена в фиксированную роль db_accessadmin этой базы данных.
Убедитесь также, что отсутствует, например, право редактирования структур таблиц в базе данных СкладХХХ и право создавать в ней новые типы данных.
8. Установите соединение c сервером базы данных от имени пользователя с учетной записью sql2 (пароль sql2).
Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, обладаете привилегиями роли Бухгалтера, т.е. вы можете просматривать данные и вставлять новые строки только в таблицах Заказ и Клиент, однако обновлять данные и удалять строки в этих таблицах вы не можете. Кроме того, вы можете выполнять все действия с таблицей Регион (соответствующие привилегии доступны через членство в роли public). К остальным таблицам, а также к представлению Запрос1, доступ оказывается запрещен. Также отсутствуют права на выполнение и многих других действий.
9. Установите соединение c сервером базы данных от имени пользователя с учетной записью sql3 (пароль sql3).
Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, также обладаете привилегиями роли Бухгалтера (см. предыдущий пункт).
10. Установите соединение c сервером базы данных от имени пользователя с учетной записью sql4 (пароль sql4).
Убедитесь, что сейчас вы, применительно к базе данных СкладХХХ, обладаете привилегиями роли Экономисты, т.е. вы можете просматривать данные и вставлять новые строки только в таблицах Поставщик и Товар, однако обновлять данные и удалять строки в этих таблицах вы не можете. Кроме того, вы можете выполнять все действия с таблицей Регион (соответствующие привилегии доступны через членство в роли public). К остальным таблицам, а также к представлению Запрос1, доступ оказывается запрещен. Также отсутствуют права на выполнение и многих других действий.
Цель работы
Ознакомиться с процессом создания базы данных и ее объектов
Освоить способы управления пользователями и правами доступа к данным.
Задачи
Создание новой базы данных.
Создание правил, умолчаний, пользовательских типов данных.
Создание таблиц базы данных, индексов и представлений.
Ввод данных в таблицы базы данных.
Предоставление доступа к серверу учетным записям Windows.
Создание новых пользователей и пользовательских ролей.
Предоставление привилегий доступа к объектам базы данных.
Предварительно при помощи пользовательского меню Windows запустите утилиту SQL Server Management Studio, после чего на панели Object Explorer в древовидной структуре раскройте папку Databases.
Далее на панели инструментов нажмите кнопку New Query, что вызовет появление на экране окна создания запросов к базе данных. Это окно, называемое окном Query, мы будем использовать для последовательного формирования в нем сценария (скрипта), который далее сохраним в файле на диске. Сценарий представляет из себя последовательность команд языка Transact-SQL, с помощью которых можно будет впоследствии автоматически сгенерировать базу данных со всеми ее объектами, а также наполнить ее таблицы данными и выполнить ряд других действий. С помощью сценария мы будем создавать такую же базу данных, что была создана средствами графического интерфейса утилиты в лабораторной работе 3.
Создание сценария заключается в том, что каждый раз мы будем добавлять в окно Query очередную команду языка Transact-SQL (или группу команд, образующих пакет), проверять ее синтаксис и затем выполнять, нажимая на панели инструментов кнопку Execute (или клавишу F5). При этом необходимо, чтобы данная команда (или пакет) была выделена подсветкой, иначе будут выполнены все без исключения команды, содержащиеся в окне Query. Если очередная команда (или пакет) будет успешно выполнена, то в окно Query можно дописать новую команду (или пакет), выделить подсветкой и далее повторить процесс, описанный выше. В конечном итоге, путем поочередного выполнения команд, будет создана база данных со всеми ее объектами и параллельно в окне Query будет сформирован сценарий, который можно сохранить в файле на диске. Теперь с помощью этого сценария можно на любом компьютере, где установлен MS SQL Server, выполнить процедуру создания базы данных.
Примечание. Готовые к выполнению команды языка Transact-SQL, с помощью которых будет создаваться база данных, и из которых будет формироваться сценарий, выделены ниже при помощи стрелок и .
1. Создание новой базы данных. Синтаксис команды (в нотации Бэкуса-Наура):
CREATE DATABASE database_name [ ON [ < filespec > [ ,...n ] ] [ , < filegroup > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] [ COLLATE collation_name ] [ FOR LOAD | FOR ATTACH ]
11. Установите соединение c сервером базы данных от имени пользователя с обычно используемой учетной записью (для класса 223-5 это будет stud223 и т.д.).
Сейчас вы обладаете абсолютными правами по управлению базой данных СкладХХХ (например, возможна корректировка структур таблиц базы данных, что невозможно в соединениях под учетными записями sql1,...,sql4). В этом можно легко убедиться, если выбрать на панели Object Explorer в дереве структуры папку Users базы данных СкладХХХ, а в правом окне - пользователя dbo. Затем в контекстном меню пользователя dbo необходимо выполнить команду Свойства и открыть окно Database User Properties - dbo. Теперь видно, что учетная запись stud223 отображается в пользователя dbo, который в свою очередь, является постоянным членом фиксированной роли базы данных db_owner, которая и предоставляет все имеющиеся привилегии и возможности.
12. Отсоедините базу данных СкладХХХ, выбрав в ее контекстном меню команду Tasks►Detach Database. Убедитесь, что база данных СкладХХХ исчезла из папки Databases. Теперь файлы этой базы данных можно, при необходимости, переместить в другую папку на жестком диске или копировать на другой носитель данных.