Автоматический бэкап нужен, чтобы пережить сбой диска, обновления, ошибку оператора и другие неприятности. В MS SQL Server это обычно делают так: создают резервные копии через команду BACKUP DATABASE, а запуск выполняют по расписанию в Windows.

Ниже - практичный план для MS SQL Server (в том числе Express, где нет SQL Server Agent).

1) Определитесь с типом резервного копирования

Для простого и надежного варианта обычно делают полные резервные копии и периодически проверяют, что они восстанавливаются.

Что выбрать по смыслу:

Вариант Как выглядит на практике Когда подходит
Полный каждый запуск создает отдельный файл резервной копии если важна простота и понятное восстановление
Разностный создается файл только с изменениями с момента последнего полного когда полные копии дорогие по времени
Журнал хранит изменения построчно для сценариев восстановления на более точные моменты времени (нужно аккуратное планирование)

Для сценариев уровня “сделать бэкап и хранить за последние дни” чаще выбирают полный вариант. Это прямо поддерживается и в SQL Server Management Studio, и в Transact-SQL.

Основа - BACKUP DATABASE:
- Microsoft Docs: BACKUP (Transact-SQL) и создание резервной копии базы данных через SSMS или командой (в статье про full backup)
https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server?view=sql-server-ver17

2) Проверьте, куда будут писаться файлы

Выберите папку на диске, где есть место, и убедитесь, что служба вашего сервера и учетная запись планировщика заданий могут туда писать.

Минимальные требования:
- Папка существует до запуска задания.
- Права на запись выданы.
- Есть место под нужное количество файлов.

Microsoft отдельно отмечает необходимость достаточного дискового пространства и регулярной очистки старых копий, потому что скрипт очистки в примерах не предусмотрен.
https://learn.microsoft.com/ru-ru/troubleshoot/sql/database-engine/backup-restore/schedule-automate-backup-database

3) Вариант для SQL Server Express: делаем автоматизацию через Windows Task Scheduler

В Express агент заданий может отсутствовать, поэтому чаще используют связку:
1) подготовка хранимой процедуры sp_BackupDatabases
2) запуск через sqlcmd
3) планировщик Windows

Microsoft описывает этот подход именно для SQL Server Express.
https://learn.microsoft.com/ru-ru/troubleshoot/sql/database-engine/backup-restore/schedule-automate-backup-database

Шаг 3.1. Создайте хранимую процедуру sp_BackupDatabases

Подключитесь к вашей базе и выполните скрипт, который создает процедуру для backup. Microsoft дает готовый скрипт для Express. В инструкции он доступен как sample script в репозитории Microsoft.
https://raw.githubusercontent.com/microsoft/mssql-support/master/sample-scripts/backup_restore/SQL_Express_Backups.sql

После выполнения процедура появится в master и станет точкой входа для резервного копирования.

Шаг 3.2. Убедитесь, что доступна утилита sqlcmd

Microsoft рекомендует использовать sqlcmd, а для версий SQL Server 2016 и новее - скачать отдельной установкой, если она не поставилась.
https://learn.microsoft.com/ru-ru/sql/tools/sqlcmd-utility

В инструкции Microsoft по Express она применяется для вызова процедуры.

Шаг 3.3. Сделайте bat-файл для запуска резервного копирования

Создайте файл, например SqlBackup.bat, и укажите команду sqlcmd.

Пример для полного бэкапа всех баз в именованном экземпляре SQLEXPRESS с проверкой Windows:

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"

Это соответствует примерам Microsoft в статье про автоматизацию Express через Windows.
https://learn.microsoft.com/ru-ru/troubleshoot/sql/database-engine/backup-restore/schedule-automate-backup-database

Если нужно с дифференциальными или другими вариантами, меняется @backupType:
- 'F' - full
- 'D' - differential
- 'L' - log (если выстраивается журнал)

Шаг 3.4. Запланируйте bat-файл в планировщике задач Windows

Откройте taskschd.msc и создайте задачу:
1) Триггер: ежедневно или по вашему расписанию
2) Действие: “Запуск программы”
3) Программа: путь к SqlBackup.bat
4) Учетная запись: та, под которой есть права на резервное копирование и доступ на запись в папку

Microsoft советует перед фиксацией расписания протестировать bat-файл вручную в консоли от имени той же учетной записи.
https://learn.microsoft.com/ru-ru/troubleshoot/sql/database-engine/backup-restore/schedule-automate-backup-database

4) Вариант для “полного” MS SQL Server: Maintenance Plan или Agent

Если у вас не Express и есть SQL Server Agent, автоматизацию можно сделать через Maintenance Plan в SSMS.

Концепция такая:
- создаете план обслуживания
- добавляете шаг резервного копирования
- добавляете очистку старых копий
- настраиваете расписание

Пример структуры плана обслуживания с полными и разностными копиями и очисткой файлов встречается в практических инструкциях по SSMS, где обычно делают вложенные шаги и ограничивают хранение по дням.
https://efsol.ru/manuals/sql-backup/

Для базовых действий резервного копирования через SSMS “Создать резервную копию” есть официальная справка Microsoft.
https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server?view=sql-server-ver17

5) Добавьте в процесс верификацию и мониторинг

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

Один из популярных подходов - добавлять RESTORE VERIFYONLY после BACKUP, чтобы убедиться, что файл соответствует резервному набору. Такой кусок есть в примерах скриптов для проверки резервной копии.
https://ironskills.by/tpost/x0pzcaln31-kak-nastroit-avtomaticheskoe-rezervnoe-k

Если не хотите усложнять, хотя бы сделайте логирование вывода sqlcmd в файл, чтобы ошибки были видны без ручного “гугления”.

6) Настройте хранение и очистку (иначе диска не хватит)

Определите правило хранения, например:
- хранить 7 последних полных копий
- дифференциальные хранить 5 рабочих дней (если используете их)

Если делаете через bat и планировщик, очистку нужно прописывать отдельно. В практических инструкциях очистка делается отдельным шагом Maintenance Plan или через удаление файлов по маске и дате.

Пример очистки в maintenance-логике:
- удалять файлы .bak старше 7 дней
- хранить копии по дням/папкам, чтобы проще чистить

На уровне примеров maintenance это описывается в инструкции по плану обслуживания.
https://efsol.ru/manuals/sql-backup/

7) Готовые шаблоны расписания (простая схема)

Для большинства прикладных задач в 1С и похожих нагрузках обычно хватает “полный раз в день” + короткое хранение.

Пример схемы:
- Полный бэкап ежедневно
- Хранение: 7 дней
- Дополнительно: раз в месяц полный чаще, если так требует политика

Если хотите разностные копии, можно делать комбинацию, как в примерах: полная раз в неделю плюс дифференциальные в рабочие дни.
https://efsol.ru/manuals/sql-backup/

Типичные ошибки при настройке

Ошибка Как проявляется Как исправить
Папка не существует или нет прав на запись задание падает сразу или не создается файл проверьте права учетной записи задачи и наличие пути заранее
Неверный экземпляр (имя server/instance) sqlcmd выполняется, но backup не идет проверьте строку -S (например .\SQLEXPRESS или server\instance)
Не создан sp_BackupDatabases для Express команда EXEC не находится сначала выполните sample script SQL_Express_Backups.sql
Нет теста восстановления вы находите проблему только при аварии хотя бы раз прогоните RESTORE VERIFYONLY и тестовое восстановление
Нет очистки старых файлов диск заполняется добавьте очистку старше N дней

Мини-чеклист перед тем как включить расписание

  • [ ] Папка для резервных копий выбрана и доступна на запись
  • [ ] Резервная копия создается вручную (bat или SSMS)
  • [ ] Для Express создана sp_BackupDatabases из sample script
  • [ ] Запуск по расписанию настроен на ту же учетную запись, от имени которой вы тестировали
  • [ ] Есть внятное правило хранения и очистки старых файлов
  • [ ] Вы видите лог/ошибки, если резервное копирование не сработало

Итог

Для MS SQL Server Express самый прямой путь - сделать bat-файл через sqlcmd, который вызывает sp_BackupDatabases, и запускать его планировщиком Windows. Официальная схема такого подхода описана у Microsoft.
https://learn.microsoft.com/ru-ru/troubleshoot/sql/database-engine/backup-restore/schedule-automate-backup-database

Для полноценного SQL Server проще собрать maintenance plan в SSMS с расписанием и очисткой. Официальные материалы Microsoft подтверждают, что резервные копии создаются через BACKUP DATABASE и через “Создать резервную копию” в SSMS.
https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server?view=sql-server-ver17