- •Лабораторный практикум
- •«Администрирование и разработка серверных баз данных»
- •«Прикладная информатика в экономике» введение
- •1. Лабораторная работа по теме «Планирование установки sql Server»
- •Установка экземпляра sql Server по умолчанию
- •Проверка инсталляции
- •Запуск службы sql Server с помощью программы sql Server Service Manager (диспетчера служб sql Server).
- •Поключение к sql Server и выполнение запроса для проверки установленных баз данных
- •Построение запроса с помощью конструктора
- •2. Лабораторная работа по теме «Управление файлами базы данных»
- •1. Использование мастера для создания базы данных
- •2.Создание базы данных в Enterprise Manager
- •3. Создание базы данных SampleDbTsql с помощью команд Transact-sql в Query Analyzer
- •4. Изменение базы данных
- •5. Просмотр информации и изменение параметров баз данных Просмотр информации о базах данных в Query Analyzer
- •Изменение свойств базы данных в Enterprise Manager
- •Просмотр опций базы данных и их изменение с помощью языка Transact-sql
- •4. Лабораторная работа по теме «обеспечение безопасности в sql server»
- •1. Управление доступом к серверу
- •1.1.Проверка способа аутентификации
- •1.2.Создание пользователей и групп пользователей в Windows
- •Результаты выполнения задания
- •2. Управление разрешениями.
- •2.1.Создание ролей базы данных
- •2.2.Назначение разрешений на операторы
- •2.3.Назначение разрешений объектам
- •Результаты выполнения задания
- •3.Управление безопасностью на уровне приложений
- •3.1.Создание роли приложения
- •3.2.Назначение разрешений при помощи представлений и хранимых процедур
- •3.3.Проверка разрешений на представление и хранимые процедуры
- •5. Лабораторная работа по теме «Резервное копирование баз данных»
- •1.Создание устройств резервного копирования с помощью sql Server Enterprise Manager
- •2. Создание устройств резервного копирования с помощью команд языка Transact-sql
- •3.Резервное копирование баз данных
- •3.1.Резевное копирование с помощью Enterprise Manager
- •3.2. Добавление резервных копий в один и тот же файл с помощью языка Transact-sql
- •3.3. Просмотр содержания устройства резервного копирования
- •3.4. Перезапись существующего файла резервных копий с помощью языка Transact-sql
- •3.5. Резервное копирование одной базы данных в несколько файлов резервных копий
- •3.5. Резервное копирование базы данных с созданием временного устройства резервного копирования
- •4. Резервное копирование журнала транзакций
- •4.1. Резервное копирование журнала транзакций с помощью Enterprise Manager
- •4.2. Резервное копирование журнала транзакций в Query Analyzer
- •5.Создание дифференциальной резервной копии
- •Создание резервной копии базы данных nwcopy
- •Моделирование случайного изменения данных
- •Восстановление базы данных из полной резервной копии
- •Проверка восстановления базы данных
- •Моделирование изменений в базе данных и сбор сведений о них
- •Выполнение полного резервного копирования базы данных nwcopy
- •Изменение базы данных nwcopy и создание резервной копии журнала транзакций
- •Изменение базы данных и создание дифференциальной резервной копии
- •Изменение базы данных nwcopy и создание еще одной резервной копии журнала транзакций
- •Моделирование повреждения базы данных
- •Восстановление полной резервной копии базы данных, дифференциальной копии и копии журнала транзакций Проверка имеющихся резервных копий
- •Просмотр выбранной стратегии восстановления
- •Вопрос 1: Вы согласны с этим планом восстановления?
- •Вопрос 2: Почему не выбрана первая резервная копия журнала транзакций?
- •Восстановление полной и дифференциальной резервных копий
- •Проверка содержимого базы данных
- •Восстановление журнала транзакций из резервной копии
- •Просмотр содержимого базы данных
- •7. Лабораторная работа по теме «Мониторинг производительности сервера»
- •1. Использование программы Windows System Monitor
- •Проведите имитацию деятельности сервера
- •Отслеживание использования памяти и процессора.
- •Использование утилиты sql Profiler
- •Конфигурирование утилиты sql Profiler для обнаружения попыток несанкционированного подсоединения к серверу
- •Конфигурирование трассировки для регистрации долго выполняющихся запросов
- •Просмотр информации о блокировках
- •Удержание блокировки на сервере
- •Обнаружение блокирование блокировок
- •8. Лабораторная работа «Автоматизация административных задач» Цели:
- •Создание операторов
- •2. Создание задания с помощью мастера
- •3. Создание многошагового задания
- •Откройте программу Event Viewer (Просмотр событий) и просмотрите, как в нем отобразилась неудачная попытка выполнить задание. Отразите это в отчете.
- •4.Создание оповещений
- •4.1. Создание оповещения с помощью мастера Create Alert Wizard
- •4.2. Создание оповещения на основе пользовательского сообщения об ошибке
- •4.4.Создание оповещений об изменении рабочего режима
- •Тестирование оповещения о заполнении журнала транзакций
- •9. Лабораторная работа по теме «Обмен данными»
- •Импорт данных из запроса
- •2. Изменение пакета dts с помощью программы dts Designer
- •Перенос объектов sql Server в новую базу данных Импортирование объектов из одной базы данных в другую
- •Экспорт файлов в текстовый файл
- •Проверьте, что для пакета создано расписание
- •Импорт данных с помощью задания массовой вставки Bulk Insert
- •Перенос данных из таблицы Excel в таблицу базы данных Pubs
- •10. Лабораторная работа по теме «Репликация»
- •Регистрация второго сервера
- •Настройка репликации транзакций
- •Создание публикации (на сервере издателе и дистрибьюторе)
- •Создание подписки (на сервере-подписчике)
- •3. Создание публикации слиянием
- •Создайте публикацию для репликации слиянием на издателе
- •Просмотрите хронологию работы агента Snapshot
- •Создание подписки по запросу и разрешение конфликтов Создание Pull подписки
- •Обновление исходной таблицы на издателе
- •Одновременное обновление на издателе и подписчике
- •6. Проверка индексных структур
- •7. Проверка полезности индексов
- •8. Просмотр статистики индексов и оценка индексной селективности
- •12. Лабораторная работа по теме «Программирование»
- •Исправление ошибок в готовом скрипте
- •2.Создание циклических программ
- •3.Использование конструкции case
- •4.Использование динамически конструирования программ
- •6. Создать таблицу в базе данных Pubs со следующими полями: fio студента, oc1, oc2, oc3, означающие оценки за экзамены. Внести в нее 3-4 записи.
- •7. Преобразовать ранее созданную функцию, добавив в нее необходимые параметры.
- •9. Создайте программу для исправления номера телефона автора с определенным идентификационным номером (Pubs..Authors)
- •13. Лабораторная работа по теме «Триггеры»
- •1. Создание триггера на вставку новой записи
- •Тестирование созданного триггера
- •2. Создание триггера на обновление для обновления содержимого колонки
- •3. Создание триггера, который поддерживает сложные бизнес-правила
- •Управление безопасностью sql Server
- •Фиксированные серверные роли sql Server
- •Фиксированные роли базы данных
- •Блокировки в sql Server
- •Обмен данными
- •Список источников данных
- •Задачи dts Designer
3. Создание базы данных SampleDbTsql с помощью команд Transact-sql в Query Analyzer
Запустите утилиту Query Analyzer. Наберите следующую команду для создания базы данных.
CREATE DATABASE SampleDBTsql
ON PRIMARY
( NAME= SampleDBTsql_Data,
FILENAME='C:\ BD\SampleDBTsql_Data.mdf',
SIZE=7MB,
FILEGROWTH=3MB)
LOG ON
( NAME= SampleDBTsql_Log,
FILENAME='C:\BD\SampleDBTsql_Log.ldf',
SIZE=3MB,
MAXSIZE=10MB,
FILEGROWTH=1MB )
Запишите параметры созданной базы данных в табл. 3, аналогичную по структуре табл.1-2
Переключитесь в Enterprise Manager, просмотрите свойства созданной базы данных, убедитесь, что база данных создана должным образом.
Таблица 3
-
Файл
Каталог
Имя файла
Начальный размер
Шаг роста
Максимальный размер
База данных
Журнал
Транзак-
ций
4. Изменение базы данных
В Enterprise Manager выберите базу данных SampleDBEM и просмотрите ее свойства.
Измените свойства базы данных, используя данные табл. 4.
Таблица 4
-
Имя файла
Выделяемое пространство
Шаг наращивания
Максимальный размер файла
SampleDBEM_Data
10Мб
10%
Не ограничен
SampleDREM_Log
5 Мб
20%
15 Мб
Переключитесь в Query Analyzer, выполните команду модификации базы данных SampleDBTsql для увеличения максимального размера журнала транзакций до 20 Мб
ALTER DATABASE SampleDBTsql
MODIFY FILE
(NAME = 'SampleDBTsql_Log',
MAXSIZE=20MB)
Как проверить, что команда выполнилась должным образом?
Напишите самостоятельно команду, изменяющую базу данных SampleDBTsql так, чтобы размер прироста файла данных составил 2 Мб, а максимальный размер – 10 Мб.
5. Просмотр информации и изменение параметров баз данных Просмотр информации о базах данных в Query Analyzer
Переключитесь в окно Query Analyzer и очистите его.
Выполните процедуру Exec sp_helpdb. Какие результаты вы получили? Отобразите результат в отчете.
Выполните процедуру Exec sp_helpdb SampleDBTsql. Отобразите в отчете результат.
Наберите следующие команды и выполните их.
Use SampleDBTsql
EXEC sp_spaceused
Что показывает хранимая процедура sp_spaceused? Результаты отобразите в отчете.
Наберите следующие команды и выполните их.
Use SampleDBTsql
EXEC sp_spaceused sysobjects
Отобразите результаты в отчете, что покажет хранимая процедура в данном случае?
Изменение свойств базы данных в Enterprise Manager
Вызовите команду «Свойства» контекстного меню для базы данных SampleDBEM. На вкладке Options просмотрите параметры базы данных и переведите базу данных в режим «Только для чтения», установив флажок Read only и нажмите ОК. Обратите внимание на отображение данной базы в Enterprise Manager.
Просмотр опций базы данных и их изменение с помощью языка Transact-sql
Переключитесь в программу Query Analyzer и очистите окно команд. Наберите и выполните команду
EXEC sp_dboption
Эта процедура отобразит список опций базы данных, которые разрешены для любой базы данных.
Выполните команду EXEC sp_dboption SampleDBEM, она должна вам показать список опций базы данных SampleDBEM. Отобразите результат в отчете.
Выполните команду для перевода базы данных в режим «Чтение_запись».
ALTER DATABASE SampleDBEM SET READ_WRITE (эта команда может выполняться достаточно долго!!).
Еще раз выполните команду для просмотра опций базы данных. Убедитесь, что опция “Read only” отсутствует.
6. Удаление базы данных
Удаление базы данных в Enterprise Manager
Раскройте ветвь Databases, выберите базу данных SampleDBEM и в контекстном меню выполните команду «Удалить», затем подтвердите ваше намерение удалить базу данных и все резервные копии.
Убедитесь, что база данных была удалена.
Удаление баз данных с помощью команд Transact-SQL
Переключитесь в Query Analyzer.
Выполните удаление созданных Вами (!!) баз данных с помощью следующих команд:
USE master
DROP DATABASE имя_БД
Команды запишите в отчет и объясните, что они делают. С помощью каких команд можно убедиться, что удаленные базы отсутствуют в списке баз данных? Приведите их в отчете.
3. Лабораторная работа. Команды Transact_sqL
Целью данной лабораторной работы является закрепление знаний основных команд языка Transact-SQL. В результате выполнения лабораторной работы студенты должны научиться:
создавать и удалять таблицы;
изменять структуру таблицы;
создавать запросы любой сложности;
изменять данные таблиц;
добавлять данные в таблицу и удалять их;
использовать подзапросы в командах запроса, добавления и исправления записей.
В отчет о проделанной работе вставьте все отлаженные команды и ее результаты.
Запустите программу Query Analyzer, просмотрите список установленных баз данных.
Откройте базу данных kadry.
USE kadry
Измените структуру таблицы Sotrud, установив ширину поля fio в 25 символов.
ALTER TABLE sotrud ALTER COLUMN fio char (25)
Удалите таблицу Tarif. Создайте новую таблицу Tarif с полями r и tarif.
DROP TABLE tarif
CREATE TABLE tarif(r NUMERIC(2) NOT NULL, tarif NUMERIC(5,2))
Запустите Enterprise Manager. Заполните таблицу Tarif записями (разряды должны быть с 1 до 18). Значения тарифного коэффициента для первого разряда должно быть равным 1, а остальные введите с шагом 0,3.
Просмотрите фамилии и даты рождения сотрудников. Исправьте таблицу Sotrud, заменив дату рождения некоторых сотрудников (например, в нашем примере записана команда, изменяющая поле birthday на ‘1975-01-01’ в тех записях, в которых оно равно ‘1975-01-13’) (см. рис. 1-2).
Рис.1. Просмотр таблицы sotrud
Рис. 2. Изменение значения полей в табл. sotrud
Исправьте фамилии у тех сотрудников, фамилии которых оканчиваются на букву «й», например, Ивановский. Уберите последнюю букву в этих фамилиях.
Чтобы Вам было понятнее, как это сделать, выполните сначала ряд запросов.
Выведите на экран фамилии тех сотрудников, которые заканчиваются буквой «й». Для этого необходимо в условии запроса в поле fio удалить пробелы справа с помощью функции RTRIM, а затем самый правый символ сравнить с буквой «й»:
SELECT fio FROM sotrud WHERE RIGHT(RTRIM(fio),1)='й' .
Затем попробуйте вывести фамилии без последней буквы, если она является буквой «й». Для этого необходимо, избавившись от пробелов справа, выделить слева число символов, на единицу меньшее оставшейся длины строки (без пробелов справа).
SELECT LEFT(RTRIM(fio),LEN(RTRIM(fio))-1) FROM sotrud where RIGHT(RTRIM(fio),1)='й'
Ну, а теперь уже можно написать требуемую команду UPDATE:
UPDATE sotrud SET fio=LEFT(RTRIM(fio),LEN(RTRIM(fio))-1)
WHERE RIGHT(RTRIM(fio),1)='й' .
Проверьте результат с помощью запроса.
Самостоятельно напишите команду для добавления недостающей буквы «й» к тем фамилиям, которые заканчиваются на букву «и».
В Query Analyzer с помощью группового запроса создайте новую таблицу с полями: Kp - код подразделения и kol_sort - количество сотрудников в подразделении. Примените для этого команду:
SELECT kp,COUNT(fio) as kol_sotr INTO vsego_sotr FROM SOTRUD GROUP BY kp .
Обратите внимание на местоположении опции INTO имя_новой_таблицы. Она ставится сразу же после списка полей! Проверьте результат.
select * from vsego_sotr
Создайте запрос к таблицам podr и vsego_sotr для вывода наименования подразделения и количества сотрудников в каждом из них.
SELECT p.podr AS ‘Наименование’, v.kol_sotr AS ‘Число сотрудников’FROM podr p INNER JOIN vsego_sotr v ON p.kp=v.kp
Выведите фамилии и. оклады только для тех сотрудников, оклад которых выше среднего по предприятию (средний оклад подсчитайте в подзапросе). Предварительно найдите средний оклад командой запроса, запишите полученное значение в отчет, а затем уже данную команду используйте в подзапросе. Используйте для этого две таблицы: Sotrud ,Tarif. Оклад одного работника рассчитывается как tarif.tarif*1000. Таблицы свяжите по полю r.В результате команда должна иметь следующий вид:
SELECT s.fio,s.r,t.tarif*1000 as oklad FROM sotrud s
INNER JOIN tarif t ON s.r=t.r where t.tarif*1000>
(SELECT AVG( t.tarif*1000)
FROM sotrud s INNER JOIN tarif t ON s.r=t.r)
Результат запроса отобразите в отчете.
С помощью группового запроса создайте новую таблицу с результатами подсчета суммы окладов в каждом подразделении.
SELECT s.kp ,SUM( t.tarif*1000) FROM SOTRUD s INNER JOIN tarif t
ON s.r=t.r GROUP BY s.kp
Напишите запрос, в котором, как в предыдущем запросе, подсчитывалась бы сумма окладов в каждом подразделении, но вместо кода подразделения выводилось бы его наименование из таблицы podr. Сгруппируйте данные по полю podr.podr. Сравните результат с результатом предыдущего запроса. Обратите внимание на тот факт, что в SQL Server в групповом запросе можно вывести только те поля, по которым производится группировка, и агрегатные функции. Поэтому для того, чтобы вывести поле podr.kp, нам приходится указать его в предложении GROUP BY.
SELECT p.podr, p.kp, SUM( t.tarif*1000) FROM sotrud s INNER JOIN tarif t
ON s.r=t.r
INNER JOIN podr p ON s.kp=p.kp
GROUP BY p.podr,p.kp
Самостоятельно напишите запрос для вывода названия подразделений и средний оклад в каждом из них для тех подразделений, в котором средний оклад по подразделению ниже среднего оклада по всему предприятию в целом
Запишите во временную таблицу sr_okl с полями kp, podr, sr_oklad сведения о средней заработной плате в каждом подразделении.
Используя таблицы sotrud, tarif и созданную таблицу sr_okl, вывести коды, названия подразделений, оклад сотрудников и средний оклад в каждом подразделении только для тех сотрудников, оклад которых выше среднего по подразделению.
Используя таблицы sotrud, tarif и созданную таблицу sr_okl, пометить «звездочкой» в таблице sotrud фамилии тех сотрудников, которые получают оклад выше среднего по подразделению.
Убрать пометку, выполненную согласно п.11.
Напишите команду для уменьшения значения разряда на единицу всем сотрудникам, которые получают заработную плату выше средней. Обратите внимание, что в команде UPDATE, которая должна использовать данные нескольких таблиц, можно использовать конструкцию FROM имя_таблицы1 INNER JOIN имя_таблицы2 …, как в обычном запросе.
Просмотрите все записи таблицы Dolg. Удалите все записи с кодом должности, большим 14. Добавьте еще одну запись с наименованием должности «Декан», кодом должности, равным 15.
SELECT * FROM dolg
DELETE FROM dolg WHERE kd>14
INSERT INTO dolg VALUES ('15','Декан')
Замените в таблице Dolg значение поля «Доцент1» на «Доцент».
Скопируйте результат в отчет.
Создайте запрос к таблице sotrud для вывода фамилий сотрудников и стажа их работы. Для вычисления стажа необходимо от текущей даты (функция GETDATE()) вычесть дату приема на работу (поле hireday) и результат разделить на 365. Но в SQL Server, прежде чем выполнить деление даты на число, необходимо преобразовать ее к числовому типу. Это выполняется с помощью одной из двух функций: CAST (выражение AS новый_тип) или CONVERT(новый_тип, выражение).
Поэтому требуемый запрос можно записать двумя способами:
SELECT fio,CAST((GETDATE()-hireday) AS INT)/365 FROM sotrud
SELECT fio,CONVERT(INT,(GETDATE()-hireday))/365 FROM sotrud
Создайте новую таблицу veteran c полями ks,fio,hireday (CREATE TABLE…). Типы полей посмотрите в табл.Sotrud (используйте системную процедуру sp_help sotrud).
Добавьте в таблицу veteran данные о сотрудниках (ks,fio,hireday) из таблицы Sotrud, которые проработали на данном предприятии более 10 лет.
Здесь следует применить команду Insert into veteran с запросом к таблице Sotrud. Общий вид команды:
INSERT INTO имя_табл SELECT список_полей FROM имя_другой_табл WHERE условие.
Выделенная часть команды представляет собой обычный запрос, он может быть весьма сложным. Важно только то, что список полей должен совпадать по типу, ширине и порядку следования с полями той таблицы, в которую добавляются записи.
С помощью команды SELECT список_полей INTO имя_таблицы создайте копию таблицы sotrud для сотрудников кафедры математики. Просмотрите результат. Добавьте в новую таблицу записи из таблицы sotrud для сотрудников кафедры бухучета.
Из новой таблицы удалите записи о доцентах. Используйте в условии команды удаления подзапрос к таблице dolg.