Лабораторная работа №2 Работа со скриптами в SQL Server

advertisement
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ОДЕСЬКИЙ НАЦІОНАЛЬНИЙ
ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ
МЕТОДИЧНІ ВКАЗІВКИ
ДО ЛАБОРАТОРНИХ ЗАНЯТЬ ЗА ТЕМОЮ
Microsoft SQL Server 2005
ЗА КУРСОМ «СЕРВЕРИ БАЗ ДАНИХ»
для студентів спеціальності 6.040302
Одеса ОНПУ 2009
МІНЕСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ОДЕСЬКИЙ НАЦІОНАЛЬНИЙ
ПОЛІТЕХНІЧНИЙ УНІВЕРСИТЕТ
МЕТОДИЧНІ ВКАЗІВКИ
ДО ЛАБОРАТОРНИХ ЗАНЯТЬ ЗА ТЕМОЮ
«Microsoft SQL Server 2005»
ЗА КУРСОМ «СЕРВЕРИ БАЗ ДАНИХ»
для студентів спеціальності 6.040302
Затверджено
на засіданні кафедри ІММЗІС
протокол №2 від 29 вересня 2009р.
Одеса ОНПУ 2009
Методічні вказівки до практичних занять за темою «Microsoft SQL Server 2005» за курсом
«Сервери баз даних» для студентів спеціальності 6.040302 / Укл. В.А. Граб - Одеса: ОНПУ, 2009
— 21 с.
Укладач: Граб Володимир Анатолійович
ЗМІСТ
Лабораторная работа №1 Установка именованного экземпляра SQL Server 2005. ......................... 4
Лабораторная работа №2 Работа со скриптами в SQL Server Management Studio SQLCmd. ......... 5
Лабораторная работа №3 Работа с утилитой bcp.exe в Microsoft SQL Server 2005. ........................ 6
Лабораторная работа №4 Перенос файлов баз данных. ..................................................................... 7
Лабораторная работа №5 Создание базы данных при помощи команды CREATE DATABASE.
Использование файловых групп для оптимизации работы базы данных. ....................................... 8
Лабораторная работа №6. Увеличение размера базы данных.Уменьшение размера
базы данных. ......................................................................................................................................... 11
Лабораторная работа №7. Назначение прав на обекты SQL Server 2005. ...................................... 12
Лабораторная работа №8. Шифрование информации в таблицах баз данных SQL Server 2005. 14
Лабораторная работа №9. Резервное копирование и восстановление базы данных. .................... 16
Лабораторная работа №10. Настройка доставки журналов. ............................................................ 18
Лабораторная работа №11. Управление уровнем блокировок. ....................................................... 21
Лабораторная работа №1
Установка именованного экземпляра SQL Server 2005.
Задание:
Установить на компьютер SQL Server 2005 со следующими параметрами:
 должен быть установлен полный набор компонентов;
 все службы в SQL Server 2005 должны работать от имени локальной системной учётной
записи;
режим аутентификации — Mixed;
пароль для учётной записи sa - p@ssw0rd;
кодировка по умолчанию — Cyrillic_General;
не посылать сообщения об ошибках в Microsoft.
Для остальных параметров оставить значения по умолчанию.
После окончания установки подключиться к SQL Server 2005 из консоли SQL Server Management
Studio.
Решение:
 С диска с дистрибутивом SQL Server 2005 запустить файл setup.exe.
Согласитесь с лицензионным соглашением и выберите компоненты, необходимые для
установки.
 На экране System Configuration Check (проверка конфигурации системы) убедиться, что
нет ошибок;
На экране Components to Install (Компоненты для установки) установить флажки напротив всех
требуемых компонентов SQL Server 2005 (флажки Create a failover cluster должны оставаться
неактивными). Нажмите кнопку Advanced, раскройте контейнер Client Components
(Клиентские компоненты), щёлкните по строке Documentation, Samples and Sample Databases
(Документация, примеры и учебные базы данных) и выберите значение Entire Feature will be
installed on local hard drive (Весь компонент будет установлен на локальном жёстком диске),
чтобы были установлены учебные базы данных и примеры.
На экране Service Account (Учётная запись службы) установите переключатель в положение Use
the built-in System Account (Использовать встроенную системную учётную запись) и в списке
справа выберите Local system (Локальная системная). Установите флажки для всех служб в
разделе Start services at the end of setup (Запустить службы по окончании установки).
На экране Authentification Mode (Режимы аутентификации) установите переключатель в
положение Mixed Mode и ведите пароль для учётной записи sa. По условию задания пароль
должен выглядеть как p@ssw0rd.
 На экране Collation Settings (Настройки сопоставления) оставьте выбранное по
умолчанию значение Cyrillic_General.
На экранах Report Server Installation Options (Параметры установки Report Server) оставьте
переключатель в положении Install the default configuration (Установить конфигурацию по
умолчанию).
На экране Error Reporting (отчёты об ошибках) снимите оба флажка, а затем на экране Ready to
Install (Готовность к установке) нажмите Install (установить).
Лабораторная работа №2
Работа со скриптами в SQL Server Management Studio SQLCmd.
Ситуация:
Необходимо создать в базе данных AdventureWorksDW таблицу dbo.BuyerCopy со структурой,
аналогичной структуре таблицы dbo.ProspectiveBuyer в этой же базе данных.
Задание:
1. Создайте при помощи средств автоматической генерации скриптов скрипт на
создание таблицы dbo.BuyerCopy в сответствии с поставленныими условиями,
сохраите этот скрипт как Путь_к_Вашей_папке\Buyer_creation.sql.
Создайте пакетный файл Путь_к_Вашей_папке\Buyer.bat. Вэтом пакетном файле должны
находиться команды на создание таблицы dbo.BuyerCopy средствами утилиты SQLCmd с
использованием созданного Вами файла Путь_к_Вашей_папке\Buyer_creation.sql. Все ошибки,
возникающие при выполнении команд SQLCmd должны записываться в файл
Путь_к_Вашей_папке\Buyer_Creation_Log.txt
2. Запустите пактный файл на выполнение и убедитесь, что таблица dbo.BuyerCopy
действительно создана.
Решение:
К пункту 1 задания — генерация скрипта на создание таблицы:
1. Запустите SQL Server Management Studio и подключитесь к серверу.
В окне Object Explorer раскройте контейнер
Имя_Вашего_сервера|Databases|AdventureWorksDW|Tables.
2. Щёлкните правой клавишей мыши по объекту таблицы dbo.ProspectiveBuyer и в
контекстном меню выберите Script Table as|Create to|New Query Editor Window
(Отскриптовать таблцу как|Создать в|Новое окно редактора запросов). Откроется
новое окно редатора кода, в которое будет помещён сгенерированный скрипт на
создание таблицы.
В этом скрипте замените строку:
CREATE TABLE [dbo].[ProspectiveBuyer];
на строку:
CREATE TABLE [dbo].[BuyerCopy];
Остальные строки оставьте без изменений.
3. Нажмите комбинацию клавиш <Ctrl>+<S>. Сохраните скрипт в файле
Путь_к_Вашей_папке\Buyer_creation.sql
К пункту 2 — создание пакетного файла:
Код для пакетного файла может быть таким:
@echo off
sqlcmd -S Имя_Вашего_сервера -Usa -Pp@ssw0rd -i Путь_к_Вашей_папке\Buyer_creation.sql -o
Путь_к_Вашей_папке\Buyer_Creation_Log.txt
Лабораторная работа №3
Работа с утилитой bcp.exe в Microsoft SQL Server 2005.
Задание:
4. Необходимо из таблицы dbo.ProspectiveBuyer базы данных AdventureWorksDW выгрузить
данные в текстовый файл.
5. Из текстового файла (полученного в предыдущем пункте) загрузить данные в таблицу
dbo.BuyerCopy базы данных AdventureWorksDW (созданной в ходе лабораторной работы №2)
Решение:
К пункту 1 задания — выгрузка данных их таблицы в текстовый файл:
3. Создайте пакетный файл bcp_out.bat с кодом:
bcp AdventureWorksDW.dbo.ProspectiveBuyer out
Путь_к_Вашей_папке\ProspectiveBuyer.txt -c -S Имя_Вашего_сервера -U sa -P
p@ssw0rd
4. Запустите bcp_out.bat на выполнение. Убедитесь, что требуемый текстовый файл был
успешно создан.
К пункту 2 задания — выгрузка данных их таблицы в текстовый файл:
5. Создайте пакетный файл bcp_in.bat с кодом:
bcp AdventureWorksDW.dbo.BuyerCopy in Путь_к_Вашей_папке\ProspectiveBuyer.txt -c -S
Имя_Вашего_сервера -U sa -P p@ssw0rd
6. Запустите bcp_in.bat на выполнение. Известными Вам средствами убедитесь, что в
таблице dbo.BuyerCopy появились данные из текстового файла ProspectiveBuyer.txt.
Озакомьтесь с описанием утилиты bcp.exe (прилагается описание с сайта
http://msdn.microsoft.com). Выполните выборку данных, возвращаемых произвольным запросом,
в текстовый файл.
Лабораторная работа №4
Перенос файлов баз данных.
Задание:
Необходимо файлы базы данных AdventureWorksDW переместить в другое место.
Решение:
6. Переведите базу данных в автономный режим, например, используя команду
ALTER DATABASE AdventureWorksDW SET OFFLINE;
Проверьте, как изменился ярлык этой базы данных в SQL Server Management Studio.
7. Средствами операционной системы перенесите файлы базы в вашу папку.
Укажите SQL Server, что файлы базы данных теперь находятся в другом месте:
ALTER DATABASE AdventureWorksDW MODIFY FILE (NAME=AdventureWorksDW_Data,
FILENAME='<Имя Вашей папки>\AdventureWorksDW_Data.mdf');
8. Верните базу данных в обычный режим:
ALTER DATABASE AdventureWorksDW SET ONLINE;
Лабораторная работа №5
Создание базы данных при помощи команды CREATE DATABASE.
Использование файловых групп для оптимизации работы базы данных.
Задание:
9. Создать базу данных с помощью команды CREATE DATABASE.
Переместить таблицу базы данных в другую файловую группу.
Решение:
Содание базы данных с помощью команды CREATE DATABASE.
Пример создания базы данных, содержащей пару файловых групп и таблицу, которая
наполняется некоторыми данными:
USE master
GO
CREATE DATABASE TEST
GO
ALTER DATABASE TEST ADD FILEGROUP TEST_DATA_1
GO
ALTER DATABASE TEST ADD FILEGROUP TEST_DATA_2
GO
ALTER DATABASE TEST
ADD FILE
( NAME = TEST1,
FILENAME = '<Ваша_папка_1>\TEST_1.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP TEST_DATA_1
GO
ALTER DATABASE TEST
ADD FILE
( NAME = TEST2,
FILENAME = '<Ваша_папка_2>\TEST_2.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP Test_DATA_2
GO
USE TEST
GO
CREATE TABLE TAB1
(
TAB1_ID INT IDENTITY(1,1),
TAB1_NAME VARCHAR(100),
CONSTRAINT PK_TAB1 PRIMARY KEY(TAB1_ID)
) ON TEST_DATA_1 -- Filegroup we created.
GO
INSERT INTO TAB1(TAB1_NAME)
SELECT Table_Name
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
GO
Выполните скрипт и рассмотрите полученную базу данных (её файлы, файловые группы,
таблицы, индексы) в SQL Server Management Studio.
Перемещение таблицы базы данных в другую файловую группу.
Для перемещения таблиц в другую файловую группу SQL Server 2005, в команду ALTER TABLE
добавлено предложение 'MOVE TO', позволяющее переместить таблицу в другую файловую
группу. Предложение MOVE TO используется наряду с предложением DROP CONSTRAINT в
синтаксисе команды ALTER TABLE. Когда удаляется ограничение первичного ключа или
кластерный индекс, можно переместить таблицу в новую файловую группу в той же самой
транзакции при использовании опции 'MOVE TO'.
Выполнение системной хранимой процедуры sp_help для таблицы TAB1 покажет, что файловой
группой для таблицы является TEST_DATA_1.
sp_help TAB1
Вот выборочный результат выполнения этой команды
Data_located_on_filegroup
------------------------TEST_DATA_1
index_name index_description
---- -----------------------PK_TAB1 clustered, unique, primary key located on TEST_DATA_1
constraint_type constraint_name
------------------------------PRIMARY KEY (clustered) PK_TAB1
Вышеприведенный результат показывает, что ограничение PK_TAB1 используется для создания
кластерного индекса на таблице TAB1. Обратите внимание, что всякий раз, когда определяется
ограничение первичного ключа, и на таблице не существует кластерный индекс, SQL Server
создаст кластерный индекс для ограничения первичного ключа. Это не справедливо для UNIQUE
ограничения. Ограничение/индекс UNIQUE будет всегда некластеризованным, если не
определено обратное при создании ограничения или индекса.
Чтобы переместить таблицу в другую файловую группу, мы должны использовать команду
удаления ограничения наряду с опцией MOVE TO, как это показано ниже. Как только таблица
перемещена в новую файловую группу, мы можем снова создать ограничение первичного ключа.
ALTER TABLE TAB1 DROP CONSTRAINT PK_TAB1 WITH (MOVE TO TEST_DATA_2)
GO
ALTER TABLE TAB1 ADD CONSTRAINT PK_TAB1 PRIMARY KEY(TAB1_ID)
GO
После выполнения вышеприведенной команды таблица TAB1 будет уже находиться в файловой
группе TEST_DATA_2. Если вы еще раз выполните хранимую процедуру sp_help, она покажет
изменение файловой группы для таблицы TAB1.
sp_help TAB1
Data_located_on_filegroup
------------------------TEST_DATA_2
Необходимо помнить следующие ограничения при использовании опции 'MOVE TO':
- MOVE TO не применима для индексных представлений или некластеризованных индексов.
- Схема фрагментации или файловая группа уже должна существовать.
- Если MOVE TO не указана, таблица будет размещаться в той же самой схеме фрагментации или
файловой группе, которая была определена для кластерного индекса.
Это оказывается очень удобным, когда мы хотим переместить некоторые большие таблицы в их
собственную файловую группу с целью повышения производительности или для создания
резервных копий отдельных таблиц посредством резервной копии файловой группы.
Лабораторная работа №6.
Увеличение размера базы данных.Уменьшение размера базы данных.
Задание:
10. Увеличить размер базы данных AdventureWorks.
Уменьшить размер базы данных AdventureWorks.
Решение:
Увеличение размера базы данных AdventureWorks.
Для увеличения размера базы данных нужно на графическом экране SQL Server Management
Studio в пункте свойства контекстного меню базы данных AdventureWorks перейти на вкладку
Files. Будем добавлять место добавлением нового файла данных для нашей базы данных: нажать
кнопку Add и в появившейся новой строке, соответствующей добавляемому файлу, указать имя
файла, его расположение, файловую группу, тип (файл данных, т.е. Data), размер (сделаем его
500 MB), запретим автоматическое приращение размера (указать для параметра autogrowth
значение none). После добавления файла проверьте свойства базы данных, убедитесь, что Ваш
файл присутствует в списке файлов базы данных AdventureWorks.
Уменьшение размера базы данных AdventureWorks.
Перед уменьшением размера базы данных полезно выяснить, сколько места в базе данных
занято данными и сколько свободно: в контекстном меню базы данных AdventureWorks выбрать:
Tasks → Shrink → Files. Затем в том же окне Вы можете выбрать файлы и метод для уменьшения
(Вам предлагается уменьшить файл, добавлнный в предыдущем пункте лабораторной работы).
Лабораторная работа №7.
Назначение прав на обекты SQL Server 2005.
Задание:
1. Создать два логина SQL Server 2005. Для первого логина использовать имя Login1 и пароль
p@ssw0rd1, для второго - Login2 и .2d00wss@p
2.
Предоставить логину Login1 права на схему HumanResources в базе данных
AdventureWorks и убедиться, что он может выполнять запросы к любым таблицам этой схемы.
Проверить также осутствие у логина Login2 прав на выполнение запросов к таблицам в схеме
HumanResources.
3.
Предоставить логину Login2 права на выполнение запроса от имени логина Login1.
Написать код запроса с использованием конструкции EXECUTE AS, в ходе которого
пользователь Login2 смог бы выполнять запрос к таблице HumanResources.Employee от имени
пользователя Login1.
PVSCN
К пункту 1 задания - создание логинов:
Запустите SQL Server Management Studio и подключитесь к своему локальному серверу. Затем
нажмите кнопку New Query, чтобы открыть редактор кода Transact-SQL.
Введите и выполните в окне редактора кода следующие команды:
USE master;
GO
CREATE LOGIN Login1 WITH PASSWORD = N'p@ssw0rd1', DEFAULT_DATABASE = master,
CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;
GO
CREATE LOGIN Login2 WITH PASSWORD = N'p@ssw0rd2', DEFAULT_DATABASE = master,
CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF;
GO
К пункту 2 задания — предоставление разрешений на схему и проверка прав:
Чтобы создать объект пользователя в базе данных AdventureWorks для логина Login1, можно
выполнить следующий код:
USE AdventureWorks;
GO
CREATE USER Login1 FOR LOGIN Login1;
GO
Чтобы предоставить пользователю Login1 права на чтение для объектов схемы HumanResources,
можно выпонить код:
GRANT SELECT ON SCHEMA:: HumanResources TO Login1;
Для проверки полученных прав можно подключиться от имени Login1 (File → New → Database
Engine Query) и выполнить любой запрос на выборку.Если попытаться выполнить запрос от
имени Login2, то вернётся ошибка.
К пункту 3 задания — предоставление права на выполнение с помощью выражения
EXECUTE AS:
Для того, чтобы предоставить право логину Login2 выполнять команды от имени логина
Login1, можно выполнить следующий код (от имени администратора сервера):
USE master;
GO
GRANT IMPERSONATE ON LOGIN::Login1 TO Login2;
GO
Для проверки предоставленных прав и изменения контекста выполнения можно
воспользоваться следующим запросом (его нужно выполнить, подключившись к серверу от
имени логина Login2):
EXECUTE AS LOGIN = 'Login1';
GO
USE AdventureWorks;
GO
SELECT * FROM HumanResources.Employee;
GO
Лабораторная работа №8.
Шифрование информации в таблицах баз данных SQL Server 2005.
Задание:
В соответствии с новой политикой организации, информация о заработной плате
сотрудникам за предыдущие периоды должна храниться только в зашифрованном виде с
использованием алгоритма шифрования AES с длиной ключа не менее 256 бит.
Для этого:
1. Создать в базе данных AdventureWorks симметричный ключ PayKeyдля применения с
алгоритмом AES_256. Ключ должен быть защищён паролем P@ssw0rd.
2.
Создать в этой базе данных копию таблицы HumanResources.EmployeePayHistory. Новая
копия должна называться HumanResources.EmployeePayHistoryEncrypted и все данные в ней
должны быть зашифрованы при помощи созданного Вами симметричного ключа.
3. Выполнить запрос, который бы вернул все данные из зашифрованной таблицы
HumanResources.EmployeePayHistoryEncrypted
Примечание:
Зашифрованную информацию нельзя поместить в стобцы типа int, money и т.п. Поэтому
создание таблицы
HumanResources.EmployeePayHistoryEncrypted придётся производить
вручную. При этом можно использовать для всех столбцов этой таблицы один и тот же тип
данных — nvarchar(100). Кроме того, несимвольные типы данных необходимо преобразовать в
символьные (например, nvarchar(100)) перед передачей их шифрующей функции.
Решение:
К пункту 1 задания - создание симметричного ключа:
Команда на создание симметричного ключа в соответствии с поставленными условиями
может выглядеть так:
USE AdventureWorks;
GO
CREATE SYMMETRIC KEY PayKey
WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = 'P@ssw0rd;
GO
Убедитесь, используя SQL Server Management , что ключ был успешно создан:
Databases → AdventureWorks → Security → Symmetric Keys.
К пункту 2 задания - создание зашифрованной копии таблицы:
Команда
для
создания
зашифрованной
HumanResources.EmployeePayHistoryможет выглядеть так:
USE AdventureWorks;
GO
-- Создаём таблицу для вставки шифрованных данных
CREATE TABLE HumanResources.EmployeePayHistoryEncrypted
(EmployeeID nvarchar(100),
RateChangeDate nvarchar(100),
Rate nvarchar(100),
копии
таблицы
PayFrequency nvarchar(100),
ModifiedDate nvarchar(100));
GO
-- Открываем симметричный ключ
OPEN SYMMETRIC KEY PayKey DECRYPTION BY PASSWORD = 'P@ssw0rd';
GO
-- Вставляем данные в таблицу при помощи INSERT INTO
INSERT INTO AdventureWorks.HumanResources.EmployeePayHistoryEncrypted
(EmployeeID, RateChangeDate, Rate, PayFrequency, ModifiedDate)
SELECT
EncryptByKey(Key_GUID('PayKey'), CONVERT(nvarchar(100), EmployeeID)),
EncryptByKey(Key_GUID('PayKey'), CONVERT(nvarchar(100), RateChangeDate)),
EncryptByKey(Key_GUID('PayKey'), CONVERT(nvarchar(100), Rate)),
EncryptByKey(Key_GUID('PayKey'), CONVERT(nvarchar(100), PayFrequency)),
EncryptByKey(Key_GUID('PayKey'), CONVERT(nvarchar(100), ModifiedDate))
FROM AdventureWorks.HumanResources.EmployeePayHistory;
GO
Убедитесь, что в таблице EmployeePayHistoryEncrypted данные таки да зашифрованы:
SELECT * FROM EmployeePayHistoryEncrypted;
GO
К пункту 3 задания - запрос к зашифрованным данным:
Запрос, возвращающий данные из нашей зашифрованной таблицы может выглядеть так:
OPEN SYMMETRIC KEY PayKey DECRYPTION BY PASSWORD = 'P@ssw0rd';
GO
SELECT
Convert(Nvarchar(100), DecryptByKey(EmployeeID)) AS EmployeeID,
Convert(Nvarchar(100), DecryptByKey(RateChangeDate)) AS RateChangeDate,
Convert(Nvarchar(100), DecryptByKey(Rate)) AS Rate,
Convert(Nvarchar(100), DecryptByKey(PayFrequency)) AS PayFrequency,
Convert(Nvarchar(100), DecryptByKey(ModifiedDate)) AS ModifiedDate
FROM AdventureWorks.HumanResources.EmployeePayHistoryEncrypted;
GO
Откройте новую сессию подключения к Вашему SQL Server и выполните этот же запрос на
выборку (SELECT ...),но без открытия симметричного ключа (OPEN SYMMETRIC KEY...)
Примечание:
В реальной жизни, возможно, потребуется произвести дополнительные преобразования,
чтобы вернуть информацию в виде значений с типами данных int, money и т.п. В этом примере
для простоты все данные возвращаются как nvarchar(100).
Лабораторная работа №9.
Резервное копирование и восстановление базы данных.
Задание:
11. Переведите базу данных AdventureWorks режим восстановления Full.
12. Создйте на диске D каталог Backup и произведите в него полное резервное
копирование базы данных AdventureWorks. Файл резервной копии должен называться
AdventureWorksFull.bkp
Проведите разностное резервное копирование базы данных AdventureWorks. Файл резервной
копии должен называться AdventureWorksDiff.bkp
13. Проведите резервное копирование журнала транзакций базы данных AdventureWorks. Файл
резервной копии должен называться AdventureWorksLog.bkp.
Произведите последовательное восстановление всех созданных Вами резервных копий. При
этом:
- восстановление должно производиться для новой базы данных AdventureWorks1;
- файлы этой базы даных должны находиться в каталоге D:\AdventureWorks1.
Решение:
В данном решении используются только команды Transact-SQL. Однако все действия можно
выполнить и средствами графического интерфейса SQL Server Management Stdio.
К пункту 1 задания - перевод базы данных AdventureWorks режим восстановления Full:
Соответствующая команда может выглядеть так:
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
К пункту 2 задания — проведение полного резервного копирования базы данных
AdventureWorks:
Команды на проведение резервного копирования в соответствии с поставленными условиями
могут выглядеть так:
USE master;
GO
BACKUP DATABASE AdventureWorks TO DISK = N'D:\backup\AdventureWorksFull.bkp' WITH
NOFORMAT, NOINIT, NAME = N'AdventureWorks – Full Database Backup';
GO
К пункту 3 задания — проведение разностного резервного копирования базы данных
AdventureWorks:
Код для выполнения разностного резервного копирования может быть следущим:
USE master;
GO
BACKUP DATABASE AdventureWorks TO DISK = N'D:\backup\AdventureWorksDiff.bkp' WITH
DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N'AdventureWorks – Differential Backup';
GO
К пункту 4 задания — проведение резервного копирования журнала транзакций базы
данных AdventureWorks:
Соответствующий код может быть таким:
USE master;
GO
BACKUP LOG AdventureWorks TO DISK = N'D:\backup\AdventureWorksLog.bkp' WITH
NOFORMAT, NOINIT, NAME = N'AdventureWorks – Log Backup';
GO
К пункту 5 задания — восстановление резервных копий в другую базу данных:
Возможный код:
USE master;
GO
RESTORE DATABASE AdventureWorks1 FROM DISK = N'D:\backup\AdventureWorksFull.bkp'
WITH NORECOVERY, MOVE N'AdventureWorks_Data' TO
N'D:\AdventureWorks1\AdventureWorks_Data.mdf',MOVE N'AdventureWorks_Log' TO
N'D:\AdventureWorks1\AdventureWorks_Log.ldf';
GO
RESTORE DATABASE AdventureWorks1 FROM DISK = N'D:\backup\AdventureWorksDiff.bkp'
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks1 FROM DISK = N'D:\backup\AdventureWorksLog.bkp' WITH
RECOVERY;
Примечание:
Сделать полное резервное копирование базы данных AdventureWorks можно также с помощью
утилиты командной строки sqlmaint:
sqlmaint.exe -S “Имя_Вашего_Сервера“ -U sa -P p@ssw0rd -D “AdventureWorks“ -BkUpDB
“D:\Backup“ -BkUpMedia DISK -HtmlRpt "D:\Backup\BackupReport.html"
При этом дополнительно создаётся файл отчёта BackupReport.html
Лабораторная работа №10.
Настройка доставки журналов.
Задание:
7. Установите на вашем компьютере второй экземпляр сервера SQL Server 2005 со следуюими
параметрами:
14. должен быть установлен полный набор компонентов;
15. именованный экземпляр должен называться Server2;
все службы SQL Server 2005 должны работать от имени локальной системной учётной записи;
режим аутентификации — Mixed;
16. пароль для учётной записи sa – p@ssw0rd;
17. Кодировка по умолчанию — Cyrillic_General;
не посылать сообщения об ошибках Mcrosoft;
Для остальных параметров оставьте значения по умолчанию.
8. Создайте на первом экземпляре сервера SQL Server 2005 на вашем компьютере базу данных
db1 с параметрами по умолчанию.
9. Создайте в ней таблицу Table1 со следующими параметрами:
USE db1;
GO
CREATE TABLE dbo.Table1(Col1 int, Col2 nvarchar(50));
10. Настройте автоматическую доставку журналов для созданной Вами базы данных db1 к базе
данных с таким же названием на втором экземпяре SQL Server 2005 (Server2) с интервалом
доставки 2 минуты. При этом для доставки журналов должен использоваться каталог
D:\LogShippingBackup1, которому нужно назначить сетевой путь
имя_вашего_компьютера\LogShippingBackup1. Для получения журналов должен
использоваться каталог D:\LogShippingBackup2. Сервером мониторинга для поставки
журналов должен выступать первый экземпляр SQL Server 2005.
11. Проверьте работоспособность системы доставки журналов при помощи отчётов сервера и
истории заданий. Заполните любыми значениями несколько строк в таблице Table1 исходной
базы данных и убедитесь, что эти изменения отобразились на второй базе данных.
Отмените поставку журналов и убедитесь, что Вы можете обращаться с запросами к таблице
Table1 на сервере Server2.
Решение:
К пункту 1 задания — установка именованного экземпляра SQL Server 2005:
1. Запустите программу установки SQL Server 2005, примите лицензионное соглашение и на
экране Installing Prerequisites нажмите кнопку Next.
Убедитесь, что на экране System Configuration Check нет ошибок
На экране Registration Information введите требуемые имена.
2. На экране Components to Install установите только флажок SQL Server Database Services.
На экране Instance Name переставьте переключатель в положение Named Instance и введите
имя создаваемого именованного экземпляра (Server2).
На экране Service Account переставьте переключатель в положение Use the built-in System
Account и убедитесь, что в правом списке выбрано “Local system”. На этом же экране в группе
Start services at the end of setup установите флажок SQL Server Agent.
На экране Authentification Mode установите переключатель положение Mxed Mode и укажите
для учётной записи sa пароль p@ssw0rd.
На экране Collation Settings выберите кодировку Cyrillic_Gentral.
На экране Errors and Usage Report Settings убедитесь, что все флажки сняты.
К пункту 2 задания — создание базы данных db1 на первом экземпляре сервера SQL Server
2005:
1. Для создания базы данных db1 с параметрами по умолчанию подключитесь к первому
экземпляру SQL Server 2005 и выполните на нём команду:
CREATE DATABASE db1;
Пункт 3 задания (создание таблицы) выполняется с помощью кода, приведённого в
задании.
К пункту 4 задания — настройка автоматической доставки журналов:
 Создайте на диске D: вашего компьютера каталог D:\LogShippingBackup1.
Откройте свойства этой папки, перейдите на вкладку Доступ и сделайте эту папку
общей с сетевым именем LogShippingBackup1. Затем нажмите кнопку Разрешения
и предоставьте группе Все полный доступ к этому каталогу. Создайте также
каталог D:\LogShippingBackup2.
В SQL Server Management Studio раскройте узел имя_вашего_сервера\SQL2005 → Databases и в
контекстном меню созданной базы данных db1 выберите Tasks → Ship Transaction Logs.
Откроется вкладка Transaction Log Shipping свойств этой базы данных.
На этой вкладке установите флажок Enable this as a primary database in a log shipping
configuration и нажмите кнопку Backup Settings.
В окне Transaction Log Backup Settings в поле Network Path to backup folder введите путь
\\имя_вашего_сервера\LogShippingBackup1
Нажмите кнопку Shedule и измените расписание резервного копирования таким образом, чтобы
оно производилось каждые 2 минуты. Затем в окне Transaction Log Backup Settings нажмите
кнопку OK чтобы вернуться в окно свойств базы данных.
Примечание: таким образом мы настроили интервал в 2 минуты только для
резервного копирования исходной азы данных. Для того, чтобы изменить
интервал копирования и восстановления (по умолчанию один раз в 15 минут),
необходимо изменить свойства заданий н втором сервере. Это можно сделать как
при настройке доставки журналов, так и потом.
 В списке Secondary server instances and databases нажмите кнопку Add, а
затем в открывшемся окне Secondary Database Settings нажмите кнопку
Connect. В окне Connect to server введите имя второго экемпляра SQL Server
2005 и нажмите кнопку Connect чтобы вернуться в окно Secondary Database
Settings.
 В окне Secondary Database Settings оставьте предлагамое по умолчанию
значение db1 в поле Secondary Database и на вкладке Initialize Secondary
Database оставьте для переключателя значение по умолчанию Yes, generate a
full backup of the primary database.
Перейдите на вкладку Copy Files и в поле Destination Folder for copied files введите
значение D:\LogShippingBackup2. Затем на этой вкладке и на вкладке Restore Transaction
Log расписание создаваемых заданий таким образом, чтобы копирование и
восстановление также производились один раз в 2 минуты. Оставьте для остальных
параметров значения по умолчанию и нажмите OK чтобы вернуться в окно свойств базы
данных.
На вкладке Transaction Log Shipping свойств базы данных установите флажок Use a
monitor server instance нажмите кнопку Settings. В открывшемся окне Monitor Server
Instance нажмите кнопку Connect и подключитесь к серверу имя_вашего_сервера. Закройте
окно базы данных с сохранением внесенных изменений. Убудитесь, что в окне Save Log
Shipping Configuration все этапы выполнены успешно.
К пункту 5 задания — просмотр информации о поставке журналов:
 В окне Object Explorer в SQL Server Management Studio выделите строку для сервера,
который был назначен сервером мониторинга доставки журналов (Имя_вашего_сервера),
и в меню View выберите пункт Summary.
В открывшемся окне Summary нажмите на стрелку рядом со списком Report чтобы открыть
список отчётов. В этом списке отчётов выберите отчёт Transaction Log Shipping Status.
В окне Object Explorer раскройте узел имя_вашего сервера\SQL2005 → SQL Server Agent →
Jobs и посмотрите историю выполнения задания LSBackup_DB1 (при помощи команды View
history в контекстном меню). Подключитесь ко второму серверу (Server2) и посмотрите историю
выполнения заданий LSCopy и LSRestore. Эти задания должны выполняться без ошибок.
 Заполните любыми значениями несколько строк в таблице Table1 исходной базы данных.
Проследите за изменением содердимого папок D:\LogShippingBackup1 и D:\LogShippingBackup2.
К пункту 6 задания — отмена доставки журналов:
 В окне Object Explorer раскройте узел имя_вашего сервера\SQL2005 → SQL Server
Agent → Jobs и откройте свойства задания LSBackup_db1, а затем на вкладке General
снимите флажок Enabled. Пододите 2 минуты (это время, которое потребуется чтобы
скопировать и восстановить уже созданные резервные копии журнала транзакций), а
затем точно так же отключите задания LSCopy и LSRestore на втором сервере.
Откройте историю выполнения команды LSRestore (при помощи команды View History
конткстного меню) на втором сервере и найдите информацию о последнем восстановленном
журнале событий.
Подключитесь из окна редактора кода SQL Management Studio ко второму серверу и выполните
команду на повторное восстановление последнего журнала транзакций (который Вы определили
согласно решению предыдущего пункта задания). Соответствующая команда может выглядеть,
например, так:
USE master;
GO
RESTORE LOG db1 FROM DISK = 'D:\LogShippingBackup2\db1_20091216110603.trn' WITH
RECOVERY;
GO
 Откройте свойства базы данных db1 на первом сервере и перейдите на вкладку
Transaction Log Shipping.
Снимите флажок Enable this as a primary database in a log shipping configuration и нажмите
кнопку Yes в окне подтверждения, затем — кнопку OK. После удаления конфигураци доставки
журнала убедитесь, что задания, историю выполнения которых Вы просматривали согласно
решению предыдущего пункта задания, удалены.
Раскройте контейнер Databases на втором сервере и убедитесь, что база данных db1
находится в обычном состоянии, а в таблице dbo.Table1 отображаются все изменения,
которые Вы внесли в исходную таблицу.
Лабораторная работа №11.
Управление уровнем блокировок.
Задание:
18. Откройте новое окно редактора скриптов в SQL Server Management Studio и
перейдите к базе данных AdventureWorks.
Выполните команды:
BEGIN TRAN
UPDATE person.address SET City = 'Test';
Засеките время выполнения этих команд (показывается в нижнем правом углу SQL Server
Management Studio). Затем выполните команду:
sp_lock @@SPID;
и посмотрите блокировки, которые наложены вашим процессом. Должны присутствовать
блокировки уровня объекта (TAB).
Выполните команду:
ROLLBACK TRAN
19. Отключите эскалацию блокировок с помощью команды:
DBCC TRACEON(1211);
и ещё раз выполните команду:
BEGIN TRAN
UPDATE person.address SET City = 'Test';
Засеките время выполнения этой команды, а затем выполните команду:
sp_lock @@SPID;
Хранимая процедура sp_lock должна показать, что используются блокировки уровня
страницы и ключа.
Выполните команду:
ROLLBACK TRAN
20. Отключите возможность применения блокировок уровня страницы для таблицы
person.address с помощью команды
ALTER INDEX ALL ON person.address SET (ALLOW_PAGE_LOCKS = OFF);
и ещё раз выполните команды:
BEGIN TRAN
UPDATE person.address SET City = 'Test';
Засеките время выполнения этой команды, а затем выполните команду:
sp_lock @@SPID;
Хранимая процедура sp_lock должна вернуть информацию о присутствии блокировок
уровня записи. Выполните команду:
ROLLBACK TRAN
21. Отключите возможность применения блокировок уровня страницы для таблицы
person.address с помощью команды
ALTER INDEX ALL ON person.address SET (ALLOW_ROW_LOCKS = OFF);
и ещё раз выполните команды:
BEGIN TRAN
UPDATE person.address SET City = 'Test';
Засеките время выполнения этой команды, а затем выполните команду:
sp_lock @@SPID;
Хранимая процедура sp_lock должна вернуть информацию о присутствии блокировок
уровня таблицы. Такой уровень блокировок теперь выбран изначально, без эскалации
блокировок. Выполните команду:
ROLLBACK TRAN
Download