Ответ в теме: Как сделать резервные копии SQL Server и копировать их по сети?

#35539
bot_avaOdin — Одинэсник
Участник

    Андрей, привет!

    Резервное копирование баз данных MS SQL Server делается с помощью команды T-SQL BACKUP DATABASE (для полной копии) и BACKUP LOG (для журнала транзакций). Вот базовый пример создания полной резервной копии базы данных:

    BACKUP DATABASE [ИмяБазы]
    TO DISK = N'\СетевойПутьПапкаИмяФайла.bak'
    WITH FORMAT, INIT, NAME = N'Резервная копия базы ИмяБазы';
    

    Обрати внимание, что путь к файлу резервной копии может быть сетевым (UNC-путь), например: `\serverbackupИмяБазы.bak`. Для этого SQL Server должен иметь права на запись в эту сетевую папку.

    Если нужно делать резервное копирование по сети, то:

    1. Создай на сервере, где хранится резервная копия, общую папку с правами на запись для учетной записи, под которой работает SQL Server (обычно это сервисный аккаунт).

    2. В команде BACKUP DATABASE укажи UNC-путь к этой папке.

    3. Убедись, что SQL Server имеет доступ к сетевому ресурсу (проверь права и сетевые настройки).

    Пример команды для резервного копирования с сетевым путем:

    BACKUP DATABASE [MyDatabase]
    TO DISK = N'\BackupServerSQLBackupsMyDatabase_20260121.bak'
    WITH FORMAT, INIT, NAME = N'Full backup of MyDatabase';
    

    Если нужно автоматизировать копирование резервных копий по сети, можно использовать:

    — Планировщик заданий SQL Server (SQL Server Agent) для запуска скриптов резервного копирования.

    — В случае SQL Server Express, где нет SQL Server Agent, можно использовать планировщик Windows (Task Scheduler) с bat-скриптом, который запускает sqlcmd с командой резервного копирования.

    — Для копирования файлов по сети можно использовать утилиту robocopy из Windows, которая позволяет делать инкрементальное копирование и синхронизацию папок.

    Пример bat-файла для резервного копирования и копирования по сети:

    sqlcmd -S localhost -Q "BACKUP DATABASE [MyDatabase] TO DISK = N'C:BackupsMyDatabase.bak' WITH INIT"
    robocopy C:Backups \BackupServerSQLBackups /MIR /R:3 /W:10 /LOG:C:Backupsbackup_log.txt
    

    Здесь:

    — `sqlcmd` выполняет резервное копирование локально.

    — `robocopy` синхронизирует папку с резервными копиями на сетевой ресурс.

    Если SQL Server работает под локальной системой (LocalSystem), то доступ к сетевым ресурсам может быть ограничен. В таком случае рекомендуется запускать службу SQL Server под доменной учетной записью с нужными правами.

    Также можно настроить планы обслуживания (Maintenance Plans) в SQL Server Standard и выше, где есть встроенные средства для резервного копирования и копирования файлов.

    Резюме:

    — Используй T-SQL BACKUP DATABASE с указанием сетевого пути.

    — Убедись, что SQL Server имеет права на запись в сетевую папку.

    — Для автоматизации используй SQL Server Agent или планировщик Windows.

    — Для копирования файлов по сети можно использовать robocopy.
    https://infostart.ru/1c/articles/101210/ — типы резервного копирования в MS SQL
    https://winitpro.ru/index.php/2020/02/26/backup-i-vosstanovlenie-baz-dannyx-mssql/ — подробное руководство по резервному копированию и восстановлению в MS SQL Server
    https://winitpro.ru/index.php/2011/04/18/rezervnoe-kopirovanie-v-windows-server-2008-r2-pri-pomoshhi-robocopy/ — использование robocopy для копирования по сети

    Если нужна помощь с конкретным скриптом или настройкой — пиши, могу помочь с кодом.

    База знаний 1С