sql - 如何使用 PowerShell 编辑 SQL 作业步骤

标签 sql sql-server powershell

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

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

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

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

提前致谢 达伦

最佳答案

使用 SMO

  1. 定义新作业步骤 SQL。您可以在倒数第二行之前的任何地方执行此操作。
  2. 加载 SMO 程序集。
  3. 创建您的服务器对象
  4. 假设您要查找的作业名称和步骤名称是 testJob3 和 secondaryStep,此行显示当前命令文本。这对于您想做的事情来说并不是必需的。
  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()

关于sql - 如何使用 PowerShell 编辑 SQL 作业步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896704/

相关文章:

sql - 如何显示捐赠是否发生在前一年而不是当前?

SQL服务器: need to escape [?

java - 通过 hibernate.hbm2ddl.auto 创建具有较长文本字段的表

azure - 通过 Powershell Runbook 从 ARM 模板部署 Azure VM,无需下载模板

powershell - 如何通过命令行使用有限用户帐户更新 Azure 上的云服务

sql - 获取所有扩展文件属性的高效脚本

sql - 如何将年数转换为月数?

sql - 将多个结果合并到单个字段中的子查询?

mysql - 用于在同一个表中搜索值的 SQL 查询

powershell - 有没有办法对任何用户使用 ConvertFrom-SecureString 和 ConvertTo-SecureString?