Консольные утилиты для работы с бэкапами баз данных MS SQL Server.
Требуется .Net 2.0 или выше.
Исходники: https://github.com/gee12/BackupUtility
SqlBackUpper.exe
Выполняет запросы к базам данных MS SQL Server для создания резервных копий.
- Работа с СУБД MS SQL Server
- Работа с конфигурационным .xml файлом. По-умолчанию ищется в рабочем каталоге с именем приложения и расширением «.cfg». Также полное имя конфигурационного файла можно задать в качестве аргумента. При отсутствии конфиг.файла — работа программы прекращается. Формат описания:
12345<Config [Атрибуты]><Connection [Атрибуты]><Connection [Атрибуты]>...</Config>Корневой тег Config — задание основных настроек. Атрибуты:
- BackupNameMask (необязательный) — маска для формирования имени создаваемого бэкапа. Обязательно должна содержать местозаполнитель с индексом 0 («{0}») для вставки текущей даты и времени. Значение по-умолчанию — «_{0:dd-MM-yyyy_HH-mm-ss}.bak»
- ConnectionMask (необязательный) — маска для формирования строки подключения к определенному серверу и базе данных. Обязательно должна содержать местозаполнители с индексами 0-6 для вставки параметров подключения. Значение по-умолчанию — «Data Source={0};Initial Catalog={1};User ID={2};Password={3};Integrated Security={4};Persist Security Info={5};Trusted_Connection={6};»
- ConnectionGroupMask (необязательный) — маска для формирования строки подключения к определенному серверу (используется, если UniteSameInst=True). Обязательно должна содержать местозаполнители с индексами 0-5 для вставки параметров подключения. Значение по-умолчанию — «Data Source={0};User ID={1};Password={2};Integrated Security={3};Persist Security Info={4};Trusted_Connection={5};»
- SqlQueryMask (необязательный) — маска для формирования строки запроса к БД на создание бэкапа. Обязательно должна содержать местозаполнители с индексами 0-3 для вставки имени БД (BaseName), пути к хранищу (BackupPath) и имени файла бэкапа соответственно (BackupNameMask). Значение по-умолчанию — «BACKUP DATABASE [{0}] TO DISK = N'{1}\\{2}’ WITH NOFORMAT, INIT, NAME = N'{3} — Full backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10»
- Timeout (необязательный) — максимальное время в секундах, выделенное на выполнение запроса. Значение по-умолчанию — «30»
- UniteSameInst (необязательный) — переключатель, необходимо ли группировать запросы к одинаковым серверам. Значение по-умолчанию — False
- LogPath (необязательный) — путь для создания log-файла. По-умолчанию — «.\» (путь к рабочему каталогу)
- MaxLogs (необязательный) — максимальное количество хранимых на диске (по указанному пути в LogPath) log-файлов. Удаляются лишние — наиболее старые. Поиск и удаление происходит по маске «*.log». Значение по-умолчанию — ‘5’.
- WindowStyle (необязательный) — стиль отображения консольных окон приложения и 7-zip. Возможные значения: Hidden (по-умолчанию), Normal, Maximized, Minimized
- ReadKeyInFinish (необязательный) — переключатель того, необходимо ли ожидать от пользователя нажатия любой клавиши клавиатуры перед завершением программы. Возможные значения: True (по-умолчанию), False. Действует только при WindowStyle = Normal | Maximized
Тег Connection — задание экземпляра соединения с базой данных и выполнения запроса на создание бэкапа. Могут задаваться несколько тегов Connection. Атрибуты:
- InstName (обязательный) — имя целевого сервера
- BaseName (обязательный) — имя целевой БД
- UserName (обязательный) — имя учетной записи для подключения к серверу
- Password (обязательный) — пароль
- BackupPath (необязательный) — путь к хранилищу — каталогу назначения. Если заданный путь отсутствует, программа создает его автоматически. Значение по-умолчанию — «.\» (путь к рабочему каталогу)
- MaxBackups (необязательный) — максимальное количество хранимых на диске (по указанному пути в BackupPath) бэкапов. Удаляются лишние — наиболее старые. Поиск и удаление происходит по маске «<BaseName>*». Значение по-умолчанию — ‘5’.
Примечание: Имя создаваемого файла бэкапа для каждого экземпляра Connection формируется как: BaseName + BackupNameMask
Пример:
123456789101112<ConfigBackupNameMask="_{0:dd-MM-yyyy_HH-mm-ss}.bak"SqlQueryMask="BACKUP DATABASE [{0}] TO DISK = N'{1}\\{2}' WITH NOFORMAT, INIT, NAME = N'{3} - Full backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"Timeout="30"UniteSameInst="true"LogPath=".\"MaxLogs="3"WindowStyle="Normal"ReadKeyInFinish="true" ><Connection InstName="(localdb)\V11.0" BaseName="master" UserName="" Password="" BackupPath="D:\Backup1\" MaxBackups="3"/><Connection InstName=".\SQLExpress" BaseName="model" UserName="gee12-PC\gee12" Password="" BackupPath="D:\Backup2\" MaxBackups="5"/></Config> - Для работы необходима библиотека BackupLibrary.dll
BackupArchiver.exe
Запускает 7-zip с необходимыми аргументами для архивирования резервных копий БД (или других файлов в целевом каталоге) в хранилище.
- Работа с архиватором 7-zip (необходимо наличие установленного 7-zip)
- Работа с конфигурационным .xml файлом (см.пункт 1 в SqlBackUpper.exe). Формат описания:
12345<Config [Атрибуты]><Folder [Атрибуты]><Folder [Атрибуты]>...</Config>Корневой тег Config — задание основных настроек. Атрибуты:
- ZipPath (необязательный) — путь к каталогу с 7-zip. Небходимо наличие 7z.exe, 7z.dll и 7-zip.dll. По-умолчанию ищет в рабочем каталоге, ‘C:\Program Files\’ или в ‘C:\Program Files (x86)\’
- ZipArgs (необязательный) — аргументы для 7-zip. Значение по-умолчанию — «a -tzip -y»
- TailMask (необязательный) — маска для формирования «хвостовой» части имени создаваемого архива. Обязательно должна содержать местозаполнитель с индексом 0 («{0}») для вставки текущей даты и времени. Значение по-умолчанию — «{0:dd-MM-yyyy_HH-mm-ss}.zip»
- LogPath (необязательный) — см.пункт 1 в SqlBackUpper.exe
- MaxLogs (необязательный) — см.пункт 1 в SqlBackUpper.exe
- WindowStyle (необязательный) — см.пункт 1 в SqlBackUpper.exe
- ReadKeyInFinish (необязательный) — см.пункт 1 в SqlBackUpper.exe
Тег Folder — задание целевого каталога и хранилища. Могут задаваться несколько тегов Folder. Атрибуты:
- SourcePath (обязательный) — путь к целевому каталогу. Если заданный путь отсутствует, текущий Folder не обрабатывается
- DestPath (необязательный) — путь к хранилищу — каталогу назначения. Если заданный путь отсутствует, 7-zip создаст его автоматически. Значение по-умолчанию — «.\» (путь к рабочему каталогу)
- HeadMask (необязательный) — маска для формирования «головной» части имени создаваемого архива. Значение по-умолчанию — «Backup»
- MaxArchives (необязательный) — максимальное количество хранимых на диске (по указанному пути в DestPath) архивов. Удаляются лишние — наиболее старые. Поиск и удаление происходит по маске «<HeadMask>*». Значение по-умолчанию — ‘5’.
Примечание: Имя создаваемого файла архива для каждого экземпляра Folder формируется как: HeadMask + TailMask
Пример:
1234567891011<ConfigZipPath="C:\Program Files\7-Zip\"TailMask="{0:dd-MM-yyyy_HH-mm-ss}.zip"ZipArgs="a -tzip -y"LogPath="D:\"MaxLogs="3"WindowStyle="Normal"ReadKeyInFinish="true"><Folder HeadMask="backup1_" SourcePath="C:\Backup1" DestPath="D:\Archive1" MaxArchives="3" /><Folder HeadMask="backup2_" SourcePath="D:\Backup2" DestPath="D:\Archive2" MaxArchives="10" /></Config> - Для работы необходима библиотека BackupLibrary.dll