Резервное копирование SQL-базы 1С в два клика

Простой и надежный способ бэкапа без углубления в тонкости настройки SQL Server Management Studio

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

DECLARE @pathName NVARCHAR(512) 

SET @pathName = ‘D:BACKUPSNAME-OF-THE-BASE_‘ + Convert(varchar(8), GETDATE(), 112) + ‘.bak’ 

BACKUP DATABASE [NAME-OF-THE-BASE] TO DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N’db_backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10

 

Где D:BACKUPS  это папка для сохранения резервных копий, а NAME-OF-THE-BASE  имя целевой базы данных. Далее необходимо поместить bat-ник для запуска скрипта в Планировщик задач Windows — и все. Каждый день в обозначенное время будет создаваться полный бэкап нужной базы. Разумеется, сама папка для бэкапов должна находиться не на самом сервере, а на внешнем диске, файловом хранилище или другом компьютере сети.


sqlcmd -S SERVERNAME -U sa -P YOUR-PASSWORD -i «c:ackups.sql»


В данном случае SERVERNAME  это имя сервера (например, SERVERSQLEXPRESS), YOUR-PASSWORD  пароль учетной записи sa, а c:ackups.sql — путь к скрипту, созданному на первом шаге. При наличии WinRAR, полученные файлы можно упаковывать для экономии места:


«c:Program FilesWinRARRar.exe» a -m2 D:BACKUPS1C_backup_%date%.rar D:BACKUPSNAME-OF-THE-BASE_*.bak

del D:BACKUPSNAME-OF-THE-BASE_*.bak

9 Comments

  1. quebracho

    Простой и надежный способ бэкапа без углубления в тонкости настройки SQL Server Management Studio.

    ИМХО, лучше углубиться, там много полезного.

    Reply
  2. ptr

    Во-первых, настоятельно рекомендую явно указывать параметр COMPRESSION или NO_COMPRESSION. Если резервные копии в последствии будут сжиматься архиватором, то лучше встроенную компрессию SQL отключить. Экономия места составит около 30%. Если же резервные копии архивировать не планируется, то встроенная компрессия на нормальном железе существенно сокращает время резервного копирования по сети, даже на гигабитке. То есть, скорость встроенной компресси на SQL существенно быстрее скрости локальной сети.

    Во-вторых, использовать Планировщик для этой цели неудобно. Слабоваты его возможности, да и журнал нормально вести не умеет. Я рекомендовал бы все же использовать SQL Server Agent. Он ведь именно для этого предназначен. А задача может быть существенно сложнее, чем просто резервное копирование.

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

    Reply
  3. skilster

    (2), спасибо за толковый комментарий! Возможности SQL Server Agent, действительно, позволяют очень тонко настроить бэкапы. Но практика показывает, что неопытные администраторы часто ошибаются при выборе способа копирования — и полученные bak-и становятся бесполезными в случае полного краха сервера.

    Reply
  4. Garstag

    А как будет выглядеть SQL-скрипт для автоматического разворачивания этого бэкапа в базу-копию?

    Reply
  5. lesenoklenok

    Спасибо за bat-ник. Это упростило жизнь.

    Reply
  6. Andry.Boris

    Спасибо, взял на заметку.

    Reply
  7. PAPIruss

    Было бы интересно узнать. Есть ли скрипт для восстановления наиболее свежего бекапа?

    Reply
  8. chmv

    А КАК ВОССТАНОВИТЬ БД

    Reply
  9. OldthiefXXX

    DECLARE @pathName NVARCHAR(512)

    SET @pathName = ‘D:HotBackupasebackup.bak’

    RESTORE DATABASE NAME-OF-THE-BASE FROM DISK = @pathName

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *