К статье
Практический материал

Администрирование · 11 мин

Как сделать бэкап базы 1С на SQL Server

Как сделать бэкап базы 1С на SQL Server: полная, разностная копия и копия журнала транзакций, настройка плана обслуживания, проверка и восстановление из бэкапа.

Резервное копирование базы 1С, развёрнутой на Microsoft SQL Server, делается средствами самой СУБД — штатными командами T-SQL, через SQL Server Management Studio (SSMS) или планом обслуживания. Выгрузка в файл .dt через конфигуратор для SQL-базы не является полноценной заменой бэкапа: она медленнее, требует монопольного доступа и не гарантирует целостность при больших объёмах данных.

Ниже разобраны практические способы создания копии: ручной бэкап через SSMS, скрипт BACKUP DATABASE, настройка регулярного расписания, проверка копии и восстановление. Отдельно рассмотрены типичные ошибки — например, бэкап на тот же диск, где лежит сама база, или отсутствие копий журнала транзакций при модели восстановления Full.

Перед любыми операциями убедитесь, что у учётной записи есть права: для создания бэкапа достаточно роли db_backupoperator в конкретной базе, для настройки планов обслуживания обычно требуются права администратора сервера.

Какие виды бэкапов существуют и что выбрать для 1С

SQL Server поддерживает три основных типа резервных копий. Полная копия (Full) содержит всю базу целиком и является обязательной основой любой стратегии. Разностная копия (Differential) сохраняет только изменения с момента последнего полного бэкапа — она создаётся быстрее и занимает меньше места. Копия журнала транзакций (Log) фиксирует все операции с момента предыдущего бэкапа журнала и позволяет восстановить базу на произвольный момент времени.

Для типовой базы 1С рабочая схема выглядит так: полная копия раз в сутки (ночью, вне рабочих часов), копии журнала транзакций каждые 15–60 минут в течение дня. Такая связка ограничивает потери данных интервалом между копиями журнала и позволяет откатиться на момент перед ошибочной операцией — например, перед некорректной обработкой, удалившей документы.

Разностные копии имеет смысл добавлять, если база большая и полный ежедневный бэкап занимает слишком много времени: тогда полная копия делается раз в неделю, разностные — ежедневно, журнальные — в течение дня. Для восстановления понадобится последняя полная копия, последняя разностная и все копии журнала после неё.

Сравнение типов бэкапов

Полная копия (Full)

Вся база целиком. Обязательна как основа, но долгая и объёмная на больших базах.

Разностная (Differential)

Только изменения с последнего полного бэкапа. Быстрее, но для восстановления нужна и полная копия.

Журнал транзакций (Log)

Позволяет восстановить базу на любой момент времени. Требует модель восстановления Full или Bulk-Logged.

Как сделать бэкап через SQL Server Management Studio

Самый простой способ разовой копии — графический интерфейс SSMS. Подключитесь к серверу, найдите базу 1С в списке «Базы данных», щёлкните по ней правой кнопкой мыши и выберите «Задачи» → «Создать резервную копию» (Tasks → Back Up). В открывшемся окне укажите тип копии — «Полная», и путь к файлу назначения.

По умолчанию SSMS предлагает путь в каталоге Backup внутри папки установки SQL Server. Этот вариант приемлем для разовой копии, но для регулярных бэкапов укажите отдельный диск или сетевую папку — иначе при отказе диска вы потеряете и базу, и её копию одновременно.

На вкладке «Параметры носителя» полезно включить проверку целостности копии после записи (Verify backup when finished). Это добавит времени, но сразу покажет, что файл записался корректно. После нажатия OK дождитесь сообщения об успешном завершении — только оно подтверждает, что бэкап создан.

Бэкап через SSMS по шагам
  1. 1
    Откройте SSMS и подключитесь к экземпляру SQL Server
  2. 2
    Найдите базу 1С, правый клик → «Задачи» → «Создать резервную копию»
  3. 3
    Выберите тип «Полная», укажите путь на отдельном диске или сетевой папке
  4. 4
    Включите проверку копии после записи на вкладке параметров носителя
  5. 5
    Нажмите OK и дождитесь сообщения об успешном завершении
  6. 6
    Проверьте, что файл .bak появился по указанному пути и имеет ненулевой размер

Как сделать бэкап скриптом T-SQL

Командный способ удобен для автоматизации и повторяемости. Базовая команда полного бэкапа выглядит так:

BACKUP DATABASE [My1CBase]

TO DISK = N'D:\Backups\My1CBase_full.bak'

WITH COMPRESSION, CHECKSUM;

Параметр COMPRESSION сжимает файл копии — для баз 1С это обычно уменьшает размер в несколько раз и ускоряет запись. Параметр CHECKSUM заставляет сервер проверять контрольные суммы страниц при чтении, что помогает выявить повреждения исходных данных. Оба параметра рекомендуется указывать всегда.

Копия журнала транзакций создаётся командой BACKUP LOG:

BACKUP LOG [My1CBase]

TO DISK = N'D:\Backups\My1CBase_log.trn'

WITH COMPRESSION;

Важно: BACKUP LOG завершится ошибкой, если база работает в простой модели восстановления (Simple). Проверить модель можно в свойствах базы на вкладке «Параметры» — поле «Модель восстановления».

sql
BACKUP DATABASE [My1CBase] TO DISK = N'D:\Backups\My1CBase_full.bak' WITH COMPRESSION, CHECKSUM;

Как настроить автоматический бэкап по расписанию

Разовые копии вручную не защищают от забывчивости. Для регулярного резервного копирования используйте план обслуживания (Maintenance Plan) в SSMS: раздел «Управление» → «Планы обслуживания» → «Создать план обслуживания». В конструктор добавляются задачи «Резервное копирование базы данных» для полной копии и журнала, задаются расписания и срок хранения файлов.

Для планов обслуживания и заданий агента SQL Server требуется, чтобы служба SQL Server Agent была запущена — проверьте её состояние в конфигураторе SQL Server Configuration Manager. В редакции Express агент отсутствует, поэтому там расписание настраивают через Планировщик заданий Windows с вызовом sqlcmd и скрипта BACKUP DATABASE.

Рекомендуемое расписание для рабочей базы 1С среднего размера: полная копия ежедневно ночью, копии журнала транзакций каждые 15–30 минут в рабочее время. Настройте также задачу очистки, удаляющую файлы старше заданного срока (например, 7–14 дней), чтобы диск не переполнился.

Как проверить, что бэкап рабочий

Файл с расширением .bak сам по себе не гарантирует возможность восстановления. Минимальная проверка — команда RESTORE VERIFYONLY, которая читает файл и проверяет его структуру и контрольные суммы без фактического восстановления:

RESTORE VERIFYONLY

FROM DISK = N'D:\Backups\My1CBase_full.bak';

Более надёжная проверка — тестовое восстановление копии в отдельную базу с другим именем на том же или тестовом сервере. Только так вы убедитесь, что цепочка «полная копия + журналы» действительно поднимается, а данные на месте. Периодичность таких проверок зависит от критичности базы, но делать это стоит регулярно, а не после аварии.

После тестового восстановления откройте базу и выполните несколько запросов к ключевым таблицам либо подключите её к тестовой копии 1С и сверьте обороты по отчёту с известными значениями. Это подтвердит не только техническую, но и прикладную целостность данных.

Контрольные точки

Как проверить результат

Файл бэкапа на диске
Норма

Файл существует, размер сопоставим с размером базы (с учётом сжатия)

Тревожный признак

Файл отсутствует, нулевой размер или размер в десятки раз меньше ожидаемого

RESTORE VERIFYONLY
Норма

Сообщение об успешной проверке набора резервных копий

Тревожный признак

Ошибки контрольных сумм или чтения файла

Тестовое восстановление
Норма

База восстанавливается и открывается, данные читаются

Тревожный признак

Ошибки RESTORE, база в состоянии Suspect после восстановления

Как восстановить базу 1С из бэкапа

Восстановление полной копии выполняется командой RESTORE DATABASE. Если база восстанавливается поверх существующей, добавьте параметр REPLACE — но только после того, как убедитесь, что текущее состояние базы вам больше не нужно, либо сделайте предварительную копию «хвоста» журнала транзакций:

RESTORE DATABASE [My1CBase]

FROM DISK = N'D:\Backups\My1CBase_full.bak'

WITH REPLACE, RECOVERY;

Для восстановления на конкретный момент времени сначала восстановите полную копию с параметром NORECOVERY, затем последовательно примените копии журнала транзакций, а на последней укажите RECOVERY и, при необходимости, STOPAT с нужной датой и временем. Порядок применения журналов нарушать нельзя — цепочка должна быть непрерывной.

После восстановления на новом сервере потребуется пересоздать или перепривязать пользователя базы к логину сервера (проблема «сирот» — orphaned users), а также обновить регистрацию базы в консоли кластера 1С, если путь или имя базы изменились.

Типичные ошибки и ограничения

Самая частая ошибка — хранение бэкапов на том же физическом диске, где лежат файлы данных базы. Отказ диска уничтожит и базу, и копии. Минимальное требование — отдельный диск, лучше — сетевое хранилище или копирование файлов в другое здание/облако.

Вторая распространённая проблема — разросшийся журнал транзакций при модели восстановления Full без регулярных копий журнала. Файл .ldf растёт до заполнения диска, база останавливается. Если копии журнала не нужны и восстановление на момент времени не требуется, переведите базу в простую модель восстановления — но осознанно, понимая, что потеряете возможность точечного восстановления.

Третья ошибка — отсутствие контроля выполнения заданий. План обслуживания может молча не работать из-за остановленного агента, переполненного диска или смены пароля учётной записи. Настройте уведомления об ошибках заданий и периодически проверяйте наличие свежих файлов бэкапов вручную.

Типичные ошибки
01
Хранение бэкапов на том же диске, что и база — отказ диска уничтожает и данные, и копии
02
Модель восстановления Full без копий журнала — журнал транзакций разрастается и заполняет диск
03
Отсутствие тестовых восстановлений — о нерабочем бэкапе узнают только в момент аварии
04
Бэкап только через выгрузку .dt — долго, требует монопольного доступа и не даёт восстановления на момент времени
05
Нет уведомлений о сбоях заданий — план обслуживания неделями не выполняется незаметно

Частые вопросы

Можно ли делать бэкап SQL-базы 1С, пока пользователи работают?

Да, команда BACKUP DATABASE не блокирует работу пользователей — это одно из главных преимуществ SQL-бэкапа перед выгрузкой .dt. Однако копирование создаёт нагрузку на дисковую подсистему, поэтому на слабом оборудовании полные копии лучше планировать на нерабочие часы.

Чем бэкап SQL отличается от выгрузки информационной базы в .dt?

Бэкап SQL копирует базу на уровне файлов СУБД: быстро, без монопольного доступа, с возможностью восстановления на момент времени. Выгрузка .dt — логический снимок средствами платформы 1С, нужный для переноса между СУБД и обновлений. Для повседневной защиты от потери данных используйте SQL-бэкап, .dt — как дополнительный инструмент.

Как часто нужно делать копии журнала транзакций?

Интервал определяет максимальный объём потерянных данных при сбое. Для активно используемой базы 1С разумный диапазон — каждые 15–60 минут в рабочее время. Чем чаще копии, тем меньше потери, но тем больше файлов придётся применять при восстановлении.

BACKUP LOG выдаёт ошибку — в чём причина?

Чаще всего база работает в простой модели восстановления (Simple), где журнал транзакций автоматически усечён и копия журнала невозможна. Проверьте модель в свойствах базы. Либо переключитесь на Full и сделайте первый полный бэкап, либо оставьте Simple и ограничьтесь полными и разностными копиями.

Сколько копий нужно хранить?

Универсальной нормы нет, но практичный минимум — полные копии за последние 7–14 дней плюс одна-две более старые (недельные или месячные). Учитывайте, что ошибку в данных иногда замечают не сразу, поэтому хранение только вчерашней копии рискованно. Срок хранения ограничен доступным местом на диске.

Нужно ли останавливать сервер 1С перед восстановлением базы?

Да. Восстановление требует монопольного доступа к базе: завершите сеансы пользователей, остановите соединения со стороны кластера 1С или переведите базу в SINGLE_USER с откатом активных транзакций (WITH ROLLBACK IMMEDIATE). После восстановления верните базу в многопользовательский режим и проверьте подключение из 1С.

Итог

Что важно запомнить

Бэкап базы 1С на SQL Server делается средствами СУБД: полная копия ежедневно, копии журнала транзакций в течение дня, файлы — на отдельном диске или сетевом ресурсе. Настройте автоматическое расписание, уведомления о сбоях и регулярно проверяйте копии тестовым восстановлением — только проверенный бэкап считается рабочим.