Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Ответить
Настройки темы
PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: AZABAZA
Дата: 04-05-2015
День добрый, всем

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

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

Отправлено: 12:41, 22-04-2015

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
# Объявляем переменные
$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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:15, 22-04-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


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


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

Отправлено: 13:22, 22-04-2015 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


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

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


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

Отправлено: 13:39, 22-04-2015 | #4


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось AZABAZA, 22-04-2015 в 13:50. Причина: забыл


Отправлено: 13:50, 22-04-2015 | #5


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Скрипт запускать только в консоли PowerShell и ни в каких других хостах(ISE,PSSQL).
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:52, 22-04-2015 | #6


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun,

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

Отправлено: 13:55, 22-04-2015 | #7


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun,

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

Отправлено: 13:44, 29-04-2015 | #8


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun,

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

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

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

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

Отправлено: 13:25, 04-05-2015 | #9


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


AZABAZA, В PowerShell нет "then"
Код: Выделить весь код
help about_if

Отправлено: 14:46, 04-05-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Удаление-Копирование-Восстановление MS SQL DB

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Удаление-Копирование-Редактирование-Восстановление БД AZABAZA Скриптовые языки администрирования Windows 0 27-03-2015 09:42
MSFT SQL Server - Есть ли способ перейти с MS SQL 2005 на MS SQL 2000 elec Программирование и базы данных 10 18-04-2013 12:35
MSFT SQL Server - MS SQL Express и MS SQL Standart Negativ Программирование и базы данных 1 25-12-2012 08:12
MSFT SQL Server - [решено] Резервное копирование MS SQL Server на сетевой ресурс Shiirx Программирование и базы данных 13 26-02-2012 12:46
MSFT SQL Server - Резервное копирование 1Cv7.7+MS SQL 2000 sp4 FATruden Программирование и базы данных 2 12-01-2011 17:17




 
Переход