Автоматический бэкап БД на SQL Server Express Edition: различия между версиями
Smorodin (обсуждение | вклад) |
Smorodin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
= Создание исполняемого файла = | = Создание исполняемого файла = | ||
− | Создаем текстовый файл, например backupGTD следующего содержания: | + | '''''Создаем текстовый файл, например backupGTD следующего содержания: |
− | 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 -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 | Sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов из командной строки в редактор запросов в режиме SQLCMD | ||
где: | где: | ||
− | -S -задает имя сервера server[\instance_name] | + | '''''-S''''' -задает имя сервера server[\instance_name] |
− | DECLSERVER\SQLGTD – имя сервера\имя экземпляра на котором крутится база. | + | '''''DECLSERVER\SQLGTD''''' – имя сервера\имя экземпляра, на котором крутится база. |
− | -E -Использует для соединения с SQL Server вместо имени пользователя и пароля доверительное соединение. | + | '''''-E''''' -Использует для соединения с SQL Server вместо имени пользователя и пароля доверительное соединение. |
− | -Q " cmdline query " - При запуске программы sqlcmd выполняет запрос, но выход из программы по завершении его выполнения не производится. Может быть выполнено несколько запросов, разделенных точкой с запятой. Заключайте запрос в кавычки, как показано выше. | + | '''''-Q " cmdline query " ''''' - При запуске программы sqlcmd выполняет запрос, но выход из программы по завершении его выполнения не производится. Может быть выполнено несколько запросов, разделенных точкой с запятой. Заключайте запрос в кавычки, как показано выше. |
− | declare – объявляем переменную s ,имя переменной всегда начинается с @, поэтому @s. В нашем случае @s это папка (диск) хранения бэкапов. | + | '''''declare''''' – объявляем переменную s ,имя переменной всегда начинается с @, поэтому @s. В нашем случае @s это папка (диск) хранения бэкапов. |
− | varchar(n) – задает тип переменной @s как строковый с длинной строки n, в примере 255 символов | + | '''''varchar(n)''''' – задает тип переменной @s как строковый с длинной строки n, в примере 255 символов |
− | set – задает значение переменной @s, в примере это папка backup на диске E (E:\backup\), далее задается имя бэкап файла , где набор функций convert(varchar(1), datepart(dw, getdate())) возвращает в текстовом формате с длинной в 1 символ текущий день недели (понедельник – 1, вторник – 2, и т.д.) и добавляется расширение bak? На выходе получим файл с именем GTD_номер дня недели.bak. | + | '''''set''''' – задает значение переменной @s, в примере это папка backup на диске E (E:\backup\), далее задается имя бэкап файла, где набор функций convert(varchar(1), datepart(dw, getdate())) возвращает в текстовом формате с длинной в 1 символ текущий день недели (понедельник – 1, вторник – 2, и т.д.) и добавляется расширение bak? На выходе получим файл с именем GTD_номер дня недели.bak. |
− | backup – создает бэкап | + | '''''backup''''' – создает бэкап |
− | database – указывает на создание бэкапа всей базы | + | '''''database''''' – указывает на создание бэкапа всей базы |
− | GTD – в нашем примере имя базы на SQL сервере | + | '''''GTD''''' – в нашем примере имя базы на SQL сервере |
− | to disk – указывает на тип устройства резервного хранения, файл жесткого диска, и указана переменная @s, которой присвоено путь и имя создаваемого файла. | + | '''''to disk''''' – указывает на тип устройства резервного хранения, файл жесткого диска, и указана переменная @s, которой присвоено путь и имя создаваемого файла. |
− | with init, noformat, skip, nounload –указывает на то что необходимо произвести перезапись данных по кругу с переопределением заголовков, что позволит нам иметь 7 файлов бэкапа на каждый день недели перезаписываемые по кругу. | + | '''''with init, noformat, skip, nounload''''' –указывает на то, что необходимо произвести перезапись данных по кругу с переопределением заголовков, что позволит нам иметь 7 файлов бэкапа на каждый день недели, перезаписываемые по кругу. |
− | + | ''Примечание: При необходимости можно использовать массу других функций, например сжатие, см. справку по запросам и функциям Transact-SQL». | |
− | Меняем расширение текстового файла на .cmd (получаем backupGTD.cmd). | + | '''''Меняем расширение текстового файла на .cmd (получаем backupGTD.cmd). |
+ | |||
+ | '''''[[Запускать необходимо с той машины, где установлена БД MS SQL]] | ||
+ | |||
+ | ''Примечание: Готовый файл находится в папке X:\Alta\utils | ||
− | |||
− | |||
= Автоматизация процесса = | = Автоматизация процесса = | ||
− | Автоматизируем процесс (на примере | + | Автоматизируем процесс (на примере Microsoft Windows Server 2008): |
+ | |||
− | Диспетчер сервера->Конфигурация-> | + | * Заходим в Диспетчер сервера -> Конфигурация -> Планировщик заданий -> Библиотека планировщика заданий. |
− | |||
+ | * Создаем простую задачу: | ||
[[Файл:SozdatZadachu.jpg]] | [[Файл:SozdatZadachu.jpg]] | ||
− | Задаем имя и описание, | + | |
+ | * Задаем имя и описание, | ||
[[Файл:SozdatZadachu2.jpg]] | [[Файл:SozdatZadachu2.jpg]] | ||
− | + | ||
+ | * Указываем периодичность (ежедневно), | ||
[[Файл:SozdatZadachu3.jpg]] | [[Файл:SozdatZadachu3.jpg]] | ||
− | + | ||
+ | * Регулярность повторений и время выполнения, | ||
[[Файл:SozdatZadachu4.jpg]] | [[Файл:SozdatZadachu4.jpg]] | ||
− | + | ||
+ | * В качестве действия указываем запуск программы, | ||
[[Файл:SozdatZadachu5.jpg]] | [[Файл:SozdatZadachu5.jpg]] | ||
− | + | ||
+ | * Указываем путь к нашему файлу backupGTD.cmd, | ||
[[Файл:SozdatZadachu6.jpg]] | [[Файл:SozdatZadachu6.jpg]] | ||
− | + | ||
+ | * Поставьте чекбокс «открыть свойства» | ||
[[Файл:SozdatZadachu7.jpg]] | [[Файл:SozdatZadachu7.jpg]] | ||
− | В свойствах указываем, что выполнять нужно вне зависимости от регистрации пользователя и указать логин пароль учетной записи с правами администратора (спросит позже). | + | |
+ | * В свойствах указываем, что выполнять нужно вне зависимости от регистрации пользователя и указать логин пароль учетной записи с правами администратора (спросит позже). | ||
[[Файл:SozdatZadachu8.jpg]] | [[Файл:SozdatZadachu8.jpg]] | ||
Строка 79: | Строка 90: | ||
На закладках условия и параметры можете задать дополнительные условия выполнения (не обязательно). | На закладках условия и параметры можете задать дополнительные условия выполнения (не обязательно). | ||
− | На выходе мы будем иметь примерно такую картину: | + | |
+ | * На выходе мы будем иметь примерно такую картину: | ||
[[Файл:SozdatZadachu9.jpg]] | [[Файл:SozdatZadachu9.jpg]] |
Версия 16:04, 3 апреля 2013
Создание исполняемого файла
Создаем текстовый файл, например backupGTD следующего содержания: 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 " cmdline query " - При запуске программы 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».
Меняем расширение текстового файла на .cmd (получаем backupGTD.cmd).
Запускать необходимо с той машины, где установлена БД MS SQL
Примечание: Готовый файл находится в папке X:\Alta\utils
Автоматизация процесса
Автоматизируем процесс (на примере Microsoft Windows Server 2008):
- Заходим в Диспетчер сервера -> Конфигурация -> Планировщик заданий -> Библиотека планировщика заданий.
- Создаем простую задачу:
- Задаем имя и описание,
- Указываем периодичность (ежедневно),
- Регулярность повторений и время выполнения,
- В качестве действия указываем запуск программы,
- Указываем путь к нашему файлу backupGTD.cmd,
- Поставьте чекбокс «открыть свойства»
- В свойствах указываем, что выполнять нужно вне зависимости от регистрации пользователя и указать логин пароль учетной записи с правами администратора (спросит позже).
На закладках условия и параметры можете задать дополнительные условия выполнения (не обязательно).
- На выходе мы будем иметь примерно такую картину: