PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Ответить
Аватара пользователя
AZABAZA

PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение AZABAZA »

День добрый, всем



У меня вопросик в области POWERSHELL.



Есть файл сервер, и сервак.

Задача:

1. Удалить *.bak файлы из директорий D:\backup.

2. Копировать *.bak файлы из файл сервера (Примечание *.bak файлы лежат в разбросанном виде. То есть нужно копировать из разных папок в одну локальную папку).

3. Запустить восстановление несколько MS SQL DB (t-sql скрипт уже есть).



Код:

Код: Выделить всё

sqlcmd -d master -Q "ALTER DATABASE  .......... FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10;"

4. Подключение юзеров (t-sql скрипт уже есть).



Код:

Код: Выделить всё

sqlcmd -d master -Q "IF  EXISTS (SELECT * FROM sys.database_principals WHERE name .............N'db_owner';"

5. Логировать каждое действие в отдельный текстовый файл.

6. Отправить письмо с логами адресату.



есть немного кода:

Код:

Код: Выделить всё

# Объявляем переменные
$des_dir = Get-Item "D:\Backup\"
$src_dir = Get-Item "\\server1\backup\"
# Удалить старые bak файлы
Get-ChildItem $des_dir -Recurse -include *.bak | Remove-Item

есть скрипт (powershell) для отправки письма, но без прикрепления лог файлов Изображение



Кто чем поможет, выражаю заранее благодарность!

Спасибо огромное!
Аватара пользователя
Kazun

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение Kazun »

Код:

Код: Выделить всё

# Объявляем переменные
$log = "C:\log\log.txt"
$des_dir = Get-Item "D:\Backup\"
$src_dir = Get-Item "\\server1\backup\"
Start-Transcript -Path $log
# Удалить старые bak файлы
Get-ChildItem $des_dir -Recurse -include *.bak | Remove-Item
#Скопировать
Get-ChildItem $src_dir -Recurse -include *.bak | Copy-Item -Destination $des_dir
#Запустить восстановление несколько MS SQL DB (t-sql скрипт уже есть).
sqlcmd -d master -Q "ALTER DATABASE  .......... FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10;"
#Подключение юзеров (t-sql скрипт уже есть).
sqlcmd -d APSDB -Q "IF  EXISTS (SELECT * FROM sys.database_principals WHERE name .............N'db_owner';"
Stop-Transcript 
send-mailmessage -from "user01@example.com" -to "user02@example.com" -subject "SQL LOG" -body "Forgot to send the attachment. Sending now." -Attachments $log -priority -smtpServer smtp.fabrikam.com
Аватара пользователя
AZABAZA

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение AZABAZA »

Kazun,

Спасибо,

я не дополнил что копировать нужно только определенные бэкапы остальные не надо копировать

Пример:back1.bak - копируем

back2.bak - не копируем

back3.bak - копируем




2. Когда еще раз копирует он говорит что already exist
Аватара пользователя
Kazun

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение Kazun »

Указать через запятую, какие файлы копировать:



Get-ChildItem "$src_dir\back1.bak","$src_dir\back3.bak" | Copy-Item -Destination $des_dir





2. Когда еще раз копирует он говорит что already exist - Насколько помню, только для папок выдается подобное сообщение.
Аватара пользователя
AZABAZA

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение AZABAZA »

Kazun,



выдает ошибку:





Код:

Код: Выделить всё

Start-Transcript : This host does not support transcription.
At line:6 char:17
+ Start-Transcript 



Код:

Код: Выделить всё

Stop-Transcript : This host does not support transcription.
At line:17 char:16
+ Stop-Transcript 
Аватара пользователя
Kazun

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение Kazun »

Скрипт запускать только в консоли PowerShell и ни в каких других хостах(ISE,PSSQL).
Аватара пользователя
AZABAZA

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение AZABAZA »

Kazun,



Спасибо огромное! пойду допиливать дальше Изображение
Аватара пользователя
AZABAZA

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение AZABAZA »

Kazun,



Что то он у меня не соблюдает порядок выполнения скриптов =( Изображение
Аватара пользователя
AZABAZA

Re: PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Сообщение AZABAZA »

Kazun,



Добрый день,

Вопрос: Как можно использовать операторы IF/THEN/ELSE/ELSE IF?



Пример:

1.Выполняется проверка почты ЕСЛИ есть письмо с темой, ТОГДА запустить скрипт ЕСЛИ нету ВЫХОД!



Примечание: Все в одном листке (скрипте)!



Заранее благодарен!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»