Среда, Февраль 22, 2012

Последние обновления

FTP ресурс как диск в Windows

Организовал себе сетевое хранилище дома. На домашних компьютерах сразу подцепил его как сетевой диск и захотелось такой же диск на работе. Естественно, из интернета доступ к сетевому хранилищу будет через FTP. Маршрут на роутере прописал и доступ к нему по FTP с работы получил....

RokBox масштабирование изображений под размер экрана

Есть такой хороший плагин как RokBox , который позволяет открывать медиа контент в всплывающих окнах. И всем впринципе хорош и удобен, но вот для меня нашлась одна проблема - он не масштабировал изображения если они не влазят в экран. На сколько...

Резервное копирование БД MSSQL с последующим сжатием

Есть сервер MSSQL с кучкой баз данных, довольно большого размера, и для всех нужны резервные копии, желательно ежедневные. Делалось всё это счастье раньше банальными Job заданиями. Но вот беда на диске с резервными копиями не осталось, добавлять новый диск или менять на большого...
Есть сервер MSSQL с кучкой баз данных, довольно большого размера, и для всех нужны резервные копии, желательно ежедневные. Делалось всё это счастье раньше банальными Job заданиями. Но вот беда на диске с резервными копиями не осталось, добавлять новый диск или менять на большого обьёма, желания не было, не наш это способ, тем более я знал что в сжатом копии весят раз в 10 меньше. Сжимать самому их регулярно не было никакого желания, поэтому было решено сделать автоматическую архивацию копий.

Для начала я решил сделать SQL скрипт для создания backup'ов БД (создаем текстовый файл и пишем в нём содержимое скрипта), например:

BACKUP DATABASE [base1] TO DISK = 'D:\SQL_BackUp\base1.bak'  WITH NOFORMAT, NOINIT, NAME = N'base1', SKIP, NOREWIND, NOUNLOAD, STATS = 10
BACKUP DATABASE [base2] TO DISK = 'D:\SQL_BackUp\base2.bak'  WITH NOFORMAT, NOINIT, NAME = N'base2', SKIP, NOREWIND, NOUNLOAD, STATS = 10

или можно усложнить и добавить в название архива дату:

DECLARE @path NVARCHAR(512) 
SET @path = 'D:\SQL_BackUp\' + Convert(varchar(8), GETDATE(), 112) + '_base1.bak'
BACKUP DATABASE [base1] TO DISK = @path WITH NOFORMAT, NOINIT, NAME = N'base1', SKIP, NOREWIND, NOUNLOAD, STATS = 10

Сохраняем файл как job.sql. Теперь можно делать скрипт для соединения с базой, отправкой на исполнение нашего скрипта job.sql и последующей архивацией полученных backup'ов в архив с удалением заархивированных backup'ов:

sqlcmd -S 1C-SQL -U user -P pass -i job.sql
"%ProgramFiles%\WinRAR\Rar.exe" a -df D:\SQL_BackUp\%date%.rar D:\SQL_BackUp\*.bak

где user и pass , логин и пароль пользователя имеющего доступ к MSSQL. Если скрипт выполняется на том же компьютере где стоит MSSQL, то можно логин пароль не указывать sqlcmd -S 1C-SQL -i job.sql. В качестве архиватора выбран WinRAR, но вы можете использовать и любой другой архиватор поддерживающий работу из консоли. Пути архивации конечно могут быть любые, в том числе и сетевые.

Сохраняем файл как mssql_backup.bat и скармливаем его в планировщик заданий Пуск->Панель управления->Планировщик заданий