2015-11-24 2 views
2

Я хочу подключиться и пройти через сотни SQL-серверов/экземпляров, найти конкретное задание с определенным шагом задания и посмотреть, чтобы изменить команду внутри этого шага задания, чтобы изменить 1 - 0 - и я хочу использовать PowerShell для этого.Как отредактировать шаг задания SQL с помощью PowerShell

У меня есть сценарий PS для включения или отключения всего задания, но я не хочу отключать задание или даже шаг задания. Я хочу изменить синтаксис внутри шага, например. от @ ENABLED = 1 до @ ENABLED = 0

Мне нужно настроить таргетинг на эти SQL-серверы по IP-адресу с помощью определенных разрешений SQL (например, учетной записи sa), поскольку серверы не находятся в домене (виртуальные машины внутри vCloud Director с NAT) ред IP-адреса)

SQL Server 2014 ж \ SP1 PowerShell v5 Windows Server 2012 R2 & 2008 R2

заранее спасибо Даррен

ответ

2

Использование SMO

  1. Определите новый шаг задания SQL. Вы можете сделать это где угодно до следующей до последней строки.
  2. Загрузите узел SMO.
  3. Создайте объект своего сервера
  4. Предполагая, что имя задания и имя шага вы ищете testJob3 и secondStep, эта строка отображает текущий текст команды. Это не обязательно для того, что вы хотите сделать.
  5. Изменить текст команды задания
  6. Зафиксируйте изменение.
$newCmd = "DECLARE @ENABLED`nSET @ENABLED = 0`n-- This is the end" 
add-type -AssemblyName "Microsoft.SqlServer.Smo, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" 
$srvObj = new-object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $connectToThisServer 
$srvObj.JobServer.Jobs['testJob3'].JobSteps['secondStep'].Command 
$srvObj.JobServer.Jobs['testJob3'].JobSteps['secondStep'].Command = $newCmd 
$srvObj.JobServer.Jobs['testJob3'].JobSteps['secondStep'].Alter()