- •Аннотация
- •Содержание
- •Введение
- •Безопасность.
- •Индексы.
- •Руководство пользователя (администратора).
- •1. Описание предметной области
- •2. Проектирование базы данных
- •2.1. Схема базы данных
- •2.2. Концептуальное проектирование
- •2.3. Обоснование нормализации (3нф)
- •3. Создание базы данных
- •4. Создание таблиц и ограничений целостности
- •5. Заполнение таблиц данными
- •6. Объекты промежуточного слоя
- •6.1. Пользовательские функции (udf)
- •6.2. Представления (Views)
- •6.3. Хранимые процедуры и подсистема xml
- •7. Стратегия резервного копирования
- •Часть 4: стратегия резервного копирования
- •8. Безопасность
- •8.1. Уровни аутентификации и авторизации
- •8.2. Ролевая модель разграничения доступа
- •8.3. Тестирование системы безопасности
- •9. Индексы
- •9.1. Кластеризованные индексы
- •9.2. Некластеризованные индексы
- •10. Руководство пользователя (администратора)
- •10.1. Установка и развертывание системы
- •10.2. Сценарии работы с данными
- •Заключение
- •Список используемых источников
- •Приложение а
- •Часть 1: оптимизация (индексы)
- •Часть 2: безопасность (без dbo)
- •Часть 3: ролевая модель (schema permissions)
- •Часть 4: стратегия резервного копирования
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 – Результат успешного выполнения запроса бэкапа базы
