Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удаление-Копирование-Восстановление MS SQL DB (http://forum.oszone.net/showthread.php?t=298783)

AZABAZA 22-04-2015 12:41 2499159

Удаление-Копирование-Восстановление MS SQL DB
 
День добрый, всем

У меня вопросик в области 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) для отправки письма, но без прикрепления лог файлов :dont-know

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

Kazun 22-04-2015 13:15 2499173

Код:

# Объявляем переменные
$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 22-04-2015 13:22 2499177

Kazun,
Спасибо,
я не дополнил что копировать нужно только определенные бэкапы остальные не надо копировать
Пример:back1.bak - копируем
back2.bak - не копируем
back3.bak - копируем


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

Kazun 22-04-2015 13:39 2499186

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

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


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

AZABAZA 22-04-2015 13:50 2499196

Kazun,

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

Код:

Start-Transcript : This host does not support transcription.
At line:6 char:17
+ Start-Transcript <<<<  -Path $log
    + CategoryInfo          : NotImplemented: (:) [Start-Transcript], PSNotSupportedException
    + FullyQualifiedErrorId : NotSupported,Microsoft.PowerShell.Commands.StartTranscriptCommand

Код:

Stop-Transcript : This host does not support transcription.
At line:17 char:16
+ Stop-Transcript <<<< 
    + CategoryInfo          : NotImplemented: (:) [Stop-Transcript], PSNotSupportedException
    + FullyQualifiedErrorId : NotSupported,Microsoft.PowerShell.Commands.StopTranscriptCommand


Kazun 22-04-2015 13:52 2499199

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

AZABAZA 22-04-2015 13:55 2499203

Kazun,

Спасибо огромное! пойду допиливать дальше :yahoo:

AZABAZA 29-04-2015 13:44 2502204

Kazun,

Что то он у меня не соблюдает порядок выполнения скриптов =( :dont-know

AZABAZA 04-05-2015 13:25 2503621

Kazun,

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

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

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

Заранее благодарен!

Foreigner 04-05-2015 14:46 2503648

AZABAZA, В PowerShell нет "then"
Код:

help about_if


Время: 06:36.

Время: 06:36.
© OSzone.net 2001-