Всі знайомі з постулатом про те, що для безпечної роботи необхідно періодично створювати резервні копії своїх баз даних, але тим не менше мало хто замислювався на цю тему до того, як в один «прекрасний» момент втратив всі свої напрацювання.
Головна> Наш блог> Створення автоматичного бекапа SQL-бази на сервері SQL Express Edition
Всі знайомі з постулатом про те, що для безпечної роботи необхідно періодично створювати резервні копії своїх баз даних, але тим не менше мало хто замислювався на цю тему до того, як в один «прекрасний» момент втратив всі свої напрацювання.Крок 1. Створюємо текстовий файл (наприклад, backupGTD.txt) такого змісту:
sqlcmd -S DECLSERVER \ SQLGTD -E -Q «declare @s varchar (255) set @ s = 'E: \ backup \ GTD_' + convert (varchar (1), datepart (dw, getdate ())) + '. bak 'backup database GTD to disk = @s with init, noformat, skip, nounload »
- -S - задає ім'я сервера, server [\ instance_name];
- DECLSERVER \ SQLGTD - ім'я сервера / ім'я екземпляра, на якому крутиться база;
- -E - використовує для з'єднання з SQL server замість імені користувача та пароля довірче з'єднання;
- -Q «cmdlinequery« - при запуску програми sqlcmd виконує запит, але вихід з програми по завершенні його виконання не проводиться. Може бути виконано кілька запитів, між якими ставиться крапка з комою. Укладайте запит в лапки, як показано вище;
- declare - оголошуємо змінну s, ім'я змінної завжди починається з @, тому @s. У нашому випадку @s - це папка (диск) зберігання резервних копій;
- varchar (n) - задає тип змінної @s як строковий з довгою рядки n, в прикладі 255 символів;
- set - задає значення змінної @s, в прикладі це папка backup на диску E (E: \ backup \), далі задається ім'я бекап файлу, де набір функцій convert (varchar (1), datepart (dw, getdate ())) повертає в текстовому форматі з довжиною в 1 символ поточний день тижня (понеділок - 1. п'ятниця - 2. і т.д.) і додається розширення bak. На виході отримаємо файл з ім'ям GTD_НомерДняНеделі.bak;
- backup - створює бекап;
- database - вказує на створення бекапа всієї бази;
- GTD - в нашому прикладі ім'я бази на SQL-сервері;
- to disk - вказує на тип пристрою резервного зберігання, файл жорсткого диска, і вказана змінна @s. якій присвоєно шлях і ім'я створюваного файлу;
- with init, noformat, skip, nounload - вказує на те, що необхідно зробити перезапис даних по колу з перевизначенням заголовків, що дозволить нам мати 7 файлів бекапа на кожен день тижня, перезапису по колу.
При необхідності можна використовувати і інші функції, наприклад стиск, см. Довідку за запитами і функцій Transact-SQL.
Крок 2. Міняємо розширення текстового файлу на .cmd
У підсумку отримуємо файл backupGTD.cmd. Запускати створений командний файл необхідно з тієї машини, де встановлена БД MS SQL.