2016-01-22 6 views
0

Я пытаюсь помочь своему системному администратору, написав сценарий Powershell, который принимает параметры и переведет это в сценарий резервного копирования для нескольких баз данных SQL Server, которые необходимо скопировать до и после наших развертываний ,Powershell alter Backup Scripts для SQL Server

Я бы в идеале хотелось, чтобы его ввести эти Титулы:

@Database = 'Genesis' 
@BackupName = 'Genesis_backup' 
@BackupDate = '2016_01_20' 
@BackupDateTime = '2016_01_20_01340_3181013' 
@Location = 'E:\SQLBackup\TEST' 

Так что, если это резервная копия строки

BACKUP DATABASE [@Database] TO DISK = N'E:\SQLBackup\TEST - 20160120\Genesis_backup_2016_01_20_01340_3181013.bak' WITH NOFORMAT, NOINIT, NAME = N'Genesis_backup_2016_01_20_01340_3181013', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10 
GO 

Я хотел Powershell, чтобы построить его, чтобы выглядеть

BACKUP DATABASE [Genesis] TO DISK = N'@Location - @BackupDate\@[email protected]' WITH NOFORMAT, NOINIT, NAME = N'@[email protected]', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10 
GO 

Как бы мне начать что-то подобное? Какие функции вы бы рекомендовали использовать для этого? Также как я могу разобрать места динамически?

ответ

0

Существует два способа: использовать прямой TSQL (предпочитаемый толпой DBA) или использовать SMO API Sql Server (более мощный, эмулирует SSMS-мастера). Поскольку многие люди DBA более знакомы с TSQL, легче получить помощь по пути TSQL.

Вместо использования собственного решения популярным подходом является использование Ola Hallengren's maintenance solution, который включает проверенные и правильные процедуры резервного копирования. Решение Ola использует задания сервера Sql Server для планирования, поэтому Sql Express должен использовать, скажем, планировщик заданий. С помощью материалов Ola просто создайте дополнительное задание агента, которое поддерживает резервные копии требуемых баз данных. Задания агента можно запустить, выполнив sp_start_job sproc. Это можно сделать, скажем, sqlcmd или Powershell's Invoke-SqlCmd.

+0

Спасибо за ваш ответ. Я просто хочу построить несколько строк. Будь проще. Он не DBA ... и я не хочу запускать его из-за пределов SSMS. Я просто хочу, чтобы он смог открыть SSMS и распечатать результаты моего сценария там. обновленный вопрос, чтобы показать, что я сделал до сих пор. – Hituptony