Backup`ы в Windows (часть 2)

by Alexey Knyazev 31. марта 2009 17:18

В продолжение своего первого поста по этой теме (http://www.t-sql.ru/post/BackupScript1.aspx), решил выложить скрипт написанный на Power Shell с использованием архиватора 7-zip (бесплатный файловый архиватор для Windows с высокой степенью сжатия).

#Архивируем с помощью 7-zip (http://www.7-zip.org/) в папку ‘C:BackupDBBackupArchive’ 
#бесплатный архиватор с отличным качеством сжатия 
$dir="C:BackupDBBackupArchive" 
$date=Get-Date -uformat "%d_%m_%Y" 

#Алиас для 7-zip 
Set-Alias -name SevenZip -value "C:Program Files7-Zip7z.exe" 

#Запрос на создание БэкАпа базы данных ‘master’, 
#с именем в формате ‘master_31-03-2009.bak’в папку ‘C:BackupDB’ 
$Query = "DECLARE @str NVARCHAR(255) "+ "SET @str='C:BackupDBmaster_'+CONVERT(VARCHAR, GETDATE(), 105)+'.bak' "+ "BACKUP DATABASE master TO DISK=@str " 

#Как вариант можно следом добавить в запрос БэкАпирование ещё ряда баз данных 

# Создаём соединение 
$SQLConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=(local);Integrated Security=SSPI") 

# Создаем SQL команду, используя наш запрос и созданное соединение 
$SQLCommand = New-Object System.Data.SqlClient.SqlCommand($Query, $SQLConnection) 

# Открываем соединение 
$SQLConnection.Open() 

# Выполняем…. 
$SQLCommand.ExecuteNonQuery() 

# Закрываем соединение 
$SQLConnection.Close() 

#Архивируем SevenZip a -r -mx C:BackupDBBackupArchive$date.zip C:BackupDB*.bak 

#Удаляем сами БэкАпы 
dir C:BackupDB*.bak|rm 

#Удаляем из папки с архивами БэкАпов все файлы старше 3х месяцев 
#и создаём log-файл с текущей датой обо всех удалённых файлах 
dir $dir*.zip|?{$_.CreationTime -lt (Get-Date).AddMonths(-3)}|tee $dir$date.log|rm

 

 

Tags:

PowerShell | SQL Server

Добавить комментарий

  Country flag

biuquote
  • Комментарий
  • Предпросмотр
Loading