14.4.23

Tips for DBA: Scripting jobs using Powershell (separated files)

Вашему вниманию предлагается сильно упрощённый пример сценария Powershell, который предназначен для скриптования заданий SQL Server в отдельные файлы. Тут используется папка для файлов C:\TEMP, которая должна быть предварительно создана и, желательно, пуста. Поскольку имена заданий будут использованы в качестве имён файлов, желательно, что бы в них не использовались недопустимые для имён файлов символы. Если это неудобно, попробуйте внести изменения в то место сценария, где подобные символы заменяются на пробелы.

# Scripting jobs using Powershell (separated files)
# Сценарий скриптования заданий в отдельные файлы
clear-Host
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo ") | Out-Null
$smoserver = new-object("Microsoft.SqlServer.Management.Smo.Server") "localhost"
$scrp = new-object ('Microsoft.SqlServer.Management.Smo.Scripter') "localhost"
# Цикл коррекции и скриптования заданий
foreach ($job in $smoserver.JobServer.Jobs)
{
# Замена недопустимых символов в имени файла на пробелы
  $JobName = $job.Name -replace ":",""
  $JobName = $JobName -replace "/","-"
  $scrp.Options.FileName = "C:\TEMP\" + $JobName + ".sql"
  $scrp.Script($job) | Out-Null
}
# Измененяем сценарии заданий, что бы отключить их неконтролируемый запуск
$file = Get-ChildItem "C:\TEMP\*.sql"
foreach ($str in $file)
{
  $content = Get-Content -path $str
  $content | foreach {$_ -replace "enabled=1", "enabled=0"} | Set-Content $str | Out-Null
}

Комментариев нет:

Отправить комментарий