Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач / Наволоцкий_1302_v2.docx
Скачиваний:
0
Добавлен:
27.12.2025
Размер:
2.47 Mб
Скачать

7. Стратегия резервного копирования

Для обеспечения сохранности данных и возможности восстановления системы после аппаратных сбоев или ошибок оператора была разработана стратегия резервного копирования (Backup Strategy) [9].

1. Выбор модели резервного копирования В проекте реализована модель «Ежедневное полное резервное копирование с перезаписью» (Daily Full Backup with Overwrite).

  • Обоснование: Учитывая небольшой объем справочной базы данных и низкую частоту транзакций в ночное время, полное копирование является наиболее надежным и простым в восстановлении способом.

  • Параметр WITH INIT: Используется при создании бэкапа для перезаписи файла. Это позволяет всегда иметь на диске одну актуальную копию базы данных, предотвращая бесконечный рост размера файла резервной копии и экономя дисковое пространство.

2. Автоматизация (Решение для SQL Server Express) Поскольку используемая редакция СУБД (Express Edition) не содержит встроенного планировщика заданий «SQL Server Agent», компоненты автоматизации были реализованы средствами операционной системы.

  • Исполняемый компонент (AutoBackup.bat): Разработан пакетный файл, содержащий команду вызова утилиты sqlcmd. Скрипт подключается к серверу в режиме доверительного соединения Windows (-E) и выполняет T-SQL команду BACKUP DATABASE.

    • Текст скрипта: sqlcmd -S .\SQLEXPRESS -E -Q "BACKUP DATABASE CircuitDB TO DISK='...' WITH INIT"

  • Планировщик (Scheduler): Для регулярного запуска скрипта использован «Планировщик заданий Windows» (Task Scheduler). Настроена задача Backup CircuitDB, которая автоматически запускает файл AutoBackup.bat ежедневно в 03:00 (период минимальной нагрузки на сервер).

Рисунок 5 – Настройка автоматического резервного копирования

В дополнение к автоматической системе, в скрипте администрирования (05_SecurityAndAdmin.sql) предусмотрен блок кода для выполнения резервного копирования вручную администратором через среду SSMS.

/* =============================================

Часть 4: стратегия резервного копирования

Скрипт создает бэкап с ДАТОЙ в имени файла.

============================================= */

PRINT 'Выполнение резервного копирования... ' + CONVERT(VARCHAR(30), GETDATE(), 120);

GO

DECLARE @BackupName NVARCHAR(255);

DECLARE @BackupFile NVARCHAR(255);

DECLARE @CurrentDate NVARCHAR(20);

-- Формируем строку даты вручную для SQL 2012 (YYYYMMDD_HHmm)

SET @CurrentDate = CONVERT(VARCHAR(8), GETDATE(), 112) + '_' + REPLACE(CONVERT(VARCHAR(5), GETDATE(), 108), ':', '');

-- Путь к папке Backup (Стандартный для SQL Express)

SET @BackupFile = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Backup\CircuitDB_' + @CurrentDate + '.bak';

SET @BackupName = N'CircuitDB-Full Database Backup';

-- Выполняем бэкап

BACKUP DATABASE [CircuitDB]

TO DISK = @BackupFile

WITH NOFORMAT, NOINIT,

NAME = @BackupName,

SKIP, NOREWIND, NOUNLOAD, STATS = 10;

PRINT 'Бэкап сохранен в: ' + @BackupFile;

GO

На рисунке 6 показан результат успешного выполнения запроса бэкапа базы

Рисунок 6 – Результат успешного выполнения запроса бэкапа базы

Соседние файлы в папке курсач