# Резервное копирование СУБД MS SQL Server

> ℹ️ Резервное копирование — процесс создания копии данных на носителе (жестком диске и т. д.), предназначенном для восстановления данных в оригинальном или новом месте их расположения в случае их повреждения или разрушения. Создание резервных копий баз данных SQL Server, выполнение проверочных процедур восстановления резервных копий и хранение резервных копий в безопасном месте вне рабочей площадки помогают предотвратить возможную необратимую потерю данных. Резервное копирование — единственный способ защитить данные!

Резервное копирование "Первой Формы" состоит из двух частей:

1. Резервное копирование веб-интерфейса "Первой Формы" можно проводить с помощью обычного архиватора. Для дальнейшего восстановления работы приложения или [переноса приложения на новый сервер](https://help.1forma.ru/maintenance_guide/installation/databases/mssql/tech_req_move.md) достаточно создать резервные копии следующих каталогов на веб-сервере:

- C:\\inetpub\\wwwroot (всей папки wwwroot)

- C:\\Program Files (x86)\\TCJobService (всей папки TCJobService) (Устаревшее: не используется, начиная с версии 2.215)

2\. Резервное копирование баз данных осуществляется встроенными инструментами и процедурами сервера MS SQL. "Первой Формой" используются два типа баз данных, подлежащих регулярному резервному копированию:

- D10Task — база данных, содержащая все сущности приложения: задачи, пользователи, прочие данные (кроме файлов).

- TaskFilesDB — файловая база данных, содержащая хранящиеся в приложении файлы. Файловых баз может быть несколько, и по мере появления их необходимо добавлять в процедуру резервного копирования.

Названия баз данных могут отличаться от указанных выше.

Чтобы определить название базы данных посмотрите на строку DB в верхней части панели администрирования "Первой Формы".

Чтобы определить название файловой базы данных, в интерфейсе администратора "Первой Формы" перейдите в раздел Системные настройки — Провайдеры загружаемых файлов. В списке могут содержаться несколько строк, каждая из которых описывает подключение к отдельной базе данных. Щелкните по строке, чтобы открыть окно с настройками провайдера, и в параметре Строка подключения проверьте название базы данных в выражении вида:

"initial catalog=TaskFilesDB" (где TaskFilesDB — название файловой базы данных).

> ℹ️ База данных должна быть в режиме FULL. Нахождение БД в режиме SIMPLE не дает возможности восстановить БД на заданный момент времени и не рекомендуется к использованию на рабочей ("боевой") БД.

## Рекомендации по резервному копированию БД SQL

- Full backup — Полное копирование БД. Не реже чем 1 раз в неделю (лучше каждую ночь)

Пример:

\-- Замените дату в имени файла на актуальную, например: + CONVERT(varchar, GETDATE(), 112)  
BACKUP DATABASE \[D10Task\] TO  DISK = N'\\\\backup-01\\D10Task\\D10Task\_backup\_2019\_03\_24.bak' WITH  RETAINDAYS = 14, NOFORMAT, NOINIT,  NAME = N'D10Task\_backup\_2019\_03\_24', SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10

- Differential backup (разностное копирование БД). Не реже чем 1 раз в день, кроме дня когда делается Full backup (лучше чаще)

Differential backup включает все изменения с момента последнего Full backup. Инкрементальным называется Log backup, включающий изменения с момента последнего Log backup.

Пример:

BACKUP DATABASE \[D10Task\] TO  DISK = N'\\\\backup-01\\D10Task\\D10Task\_backup\_2019\_03\_24\_10.bakdiff' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'D10Task\_backup\_2019\_03\_24\_10', SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10

- Log backup — Копирование журналов. Не реже чем 1 раз в час, кроме часа когда делаются Full и Diff backup

Пример:

BACKUP LOG \[D10Task\] TO  DISK = N'\\\\backup-01\\D10Task\\D10Task\_backup\_2019\_03\_24\_11.trn' WITH NOFORMAT, NOINIT,  NAME = N'D10Task\_backup\_2019\_03\_24\_11', SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10

Log backup "отрезает" журнал (лог) БД, что обеспечивает защиту от "распухания" Transaction Log.

> ℹ️ Резервное копирование баз данных рекомендуется выполнять средствами, предоставленными официальными поставщиками ваших back-up устройств, либо при помощи встроенного планировщика заданий SQL Server Agent (в версии Express эта функция недоступна).

> ℹ️ При настройке резервного копирования рекомендуется выполнить процедуру восстановления для того, чтобы убедиться в корректности создаваемой копии.

> ℹ️ Изложенные выше сведения носят рекомендательный характер. Клиент несет полную ответственность за резервное копирование своих баз данных.
