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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как сделать резервные копии SQL Server и копировать их по сети?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35538
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        как средствами sql делать резервные копии и копировать по сети

      • #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 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С