Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL2008_Administration.doc
Скачиваний:
91
Добавлен:
08.11.2018
Размер:
3.38 Mб
Скачать

Задание для самостоятельной работы 5.1 Резервное копирование и восстановление базы данных Задание:

  1. Переведите базу данных AdventureWorks в режим восстановления Full.

  2. Создайте на диске C: каталог Backup и произведите в него полное резервное копирование базы данных AdventureWorks. Файл резервной копии должен называться AdventureWorksFull.bkp.

  3. Проведите разностное резервное копирование базы данных AdventureWorks. Файл резервной копии должен называться C:\Backup\AdventureWorksDiff.bkp.

  4. Проведите резервное копирование журнала транзакций базы данных AdventureWorks. Файл резервной копии должен называться C:\Backup\AdventureWorksLog.bkp.

  5. Произведите последовательное восстановление всех созданных вами резервных копий. При этом:

восстановление должно производиться для новой базы данных AdventureWorks1.bkp

файлы этой базы данных должны находиться в корневом каталоге диска C:\.

Решение:

Примечание

В данном решении используются только команды Transact-SQ. Однако те же действия можно выполнить и средствами графического интерфейса SQL Server Management Studio.

К пункту 1 — перевод базы данных AdventureWorks в режим восстановления Full:

Соответствующая команда может выглядеть так:

ALTER DATABASE AdventureWorks SET RECOVERY FULL

К пункту 2 — проведение полного резервного копирования базы данных AdventureWorks:

Команды на проведение резервного копирования в соответствии с поставленными условиями может выглядеть так:

USE master

GO

BACKUP DATABASE AdventureWorks TO DISK = N'c:\Backup\AdventureWorksFull.bkp' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks-Full Database Backup'

GO

К пункту 3 — проведение разностного резервного копирования:

Код для выполнения разностного резервного копирования может быть следующим:

BACKUP DATABASE AdventureWorks TO DISK = N'c:\Backup\AdventureWorksDiff.bkp' WITH DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N'AdventureWorks-Differential Backup'

К пункту 4 — проведение резервного копирования журнала транзакций:

Соответствующий код может быть таким:

BACKUP LOG AdventureWorks TO DISK = N'C:\Backup\AdventureWorksLog.bkp' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks-Log Backup'

К пункту 5 — восстановление резервных копий в другую базу данных:

Соответствующий код может быть таким:

USE master

GO

RESTORE DATABASE AdventureWorks1 FROM DISK = N'c:\Backup\AdventureWorksFull.bkp' WITH NORECOVERY, MOVE N'AdventureWorks_Data' TO N'C:\AdventureWorks_Data.mdf', MOVE N'AdventureWorks_Log' TO N'C:\AdventureWorks_Log.ldf'

GO

RESTORE DATABASE AdventureWorks1 FROM DISK = N'c:\Backup\AdventureWorksDiff.bkp' WITH NORECOVERY

GO

RESTORE LOG AdventureWorks1 FROM DISK = N'C:\Backup\AdventureWorksLog.bkp' WITH RECOVERY

Задание для самостоятельной работы 6.1 Применение заданий, предупреждений и операторов Задание:

  1. Создайте на сервере имя_вашего_сервера\SQL2008 пользовательское сообщение об ошибке со следующими параметрами:

номер: 50005;

уровень важности: 16;

текст сообщения: "Возникла ошибка";

с обязательной записью в журнал событий Windows.

  1. Создайте на своем сервере оператора с именем Operator_имя_вашего_компьютера. Все сообщения, которые отправляются этому оператору, должны передаваться на консоль вашего компьютера при помощи команды NET SEND.

Примечание

По умолчанию в Windows Server 2003 Служба Сообщений (Messenger Service), которая ответственна за прием таких сетевых сообщений, отключена. Для того, чтобы оператор смог получать сообщения по NET SEND, эту службу необходимо включить.

  1. Настройте на том же сервере предупреждение MyAlert. Это предупреждение должно перехватывать вашу пользовательскую ошибку и сообщать о ее возникновении оператору.

  2. Создайте задание SQL Server Agent, которое будет с интервалом в 5 минут генерировать данную пользовательскую ошибку. Называться это задание должно JobError50005. Убедитесь, что все созданные вами элементы автоматизации работают в соответствии с заданием, а затем отключите задание SQL Server Agent.

Решение:

Примечание

Большинство действий, которые описываются ниже, можно выполнить как при помощи команд Transact-SQL, так и средствами графического интерфейса SQL Server Management Studio. В этом решении будет приводиться только программный код Transact-SQL. Информацию о применении графического интерфейса можно найти в этой главе (раздел 8.1).

К пункту 1 — создание пользовательской ошибки:

Команда на создание пользовательской ошибки может выглядеть так:

USE master

GO

sp_addmessage @msgnum = 50005, @severity=16, @msgtext = 'Возникла ошибка', @with_log = 'TRUE'

К пункту 2 — создание оператора:

Программный код для создания оператора может быть таким (замените LONDON2 на имя вашего компьютера):

USE msdb

GO

EXEC sp_add_operator @name='Operator_LONDON2', @netsend_address='LONDON2'

К пункту 3 — создание предупреждения:

Соответствующий код может выглядеть так:

USE [msdb]

GO

EXEC msdb.dbo.sp_add_alert @name='MyAlert', @message_id=50005

GO

EXEC msdb.dbo.sp_add_notification @alert_name='MyAlert', @operator_name='Operator_LONDON2', @notification_method = 4

К пункту 4 — создание задания:

Соответствующий код может быть таким:

USE msdb

GO

-- Создаем пустое задание

EXEC msdb.dbo.sp_add_job @job_name='JobError50005'

GO

-- Определяем, на каком сервере оно будет выполняться

-- Не забудьте заменить 'LONDON\SQL2008' на имя вашего сервера

EXEC msdb.dbo.sp_add_jobserver @job_name='JobError50005', @server_name = 'LONDON2\SQL2008'

GO

-- Создаем единственный этап типа TSQL

EXEC msdb.dbo.sp_add_jobstep @job_name='JobError50005', @step_name='Step1', @subsystem='TSQL', @command='RAISERROR (50005, 16, 1)'

GO

-- Создаем "пятиминутное" расписание, которое начнет работать сегодня

DECLARE @thisDay As varchar(8)

SELECT @thisDay = CONVERT(varchar(8),GETDATE(), 112)

EXEC msdb.dbo.sp_add_schedule

@schedule_name='Schedule1',

@freq_type=4,

@freq_interval=1,

@freq_subday_type=4,

@freq_subday_interval=5,

@active_start_date = @thisDay

GO

-- Назначаем это расписание заданию

EXEC msdb.dbo.sp_attach_schedule @job_name = 'JobError50005', @schedule_name = 'Schedule1'

Если все сделано правильно, то каждые 5 минут на вашем компьютере будет появляться окно сообщения, аналогичное представленному на рис. 6.1.

Рис. 6.1. Пример отчета о выполнении плана обслуживания баз данных

Чтобы отключить задание, можно выполнить команду

USE msdb

GO

EXEC msdb.dbo.sp_update_job @job_name='JobError50005', @enabled=0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]