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"
sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов из командной строки в редактор запросов в режиме SQLCMD,
где:
- -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 файлов бэкапа на каждый день недели, перезаписываемые по кругу.
Именно для моего случая строка сценария будет иметь следующий вид:
sqlcmd -S SR-P2K-ORE -E -Q "declare @s varchar(255) set @s='D:\askue-backup\sr-p2k-ore\Piramida2000new_' + replace(replace(replace(CONVERT(VARCHAR(19), GETDATE(), 120), '-', '_'), ':', '_'), ' ', '__') + '.bak' backup database Piramida2000new to disk = @s with init, noformat, skip, nounload"
Комментариев нет:
Отправить комментарий