【问题标题】:How to edit SQL job step using PowerShell如何使用 PowerShell 编辑 SQL 作业步骤
【发布时间】:2016-01-13 00:30:18
【问题描述】:

我希望通过数百个 SQL 服务器/实例连接和循环,以找到具有特定作业步骤的特定作业,并希望修改该作业步骤中的命令以将 1 更改为 0 - 我希望使用 PowerShell 来执行此操作。

我有一个 PS 脚本来启用或禁用整个作业,但我不想禁用作业甚至作业步骤。我想更改步骤中的语法, 例如。从@ENABLED=1 到 @ENABLED=0

我需要通过具有特定 SQL 权限(例如 sa 帐户)的 IP 地址来定位这些 SQL 服务器,因为这些服务器不在域中(vCloud Director 中的虚拟机具有经过 NAT 处理的 IP)

SQL Server 2014 w\SP1 PowerShell v5 Windows Server 2012 R2 和 2008 R2

提前致谢 达伦

【问题讨论】:

    标签: sql sql-server powershell


    【解决方案1】:

    使用 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      相关资源
      最近更新 更多