替换SQL作业中的备份位置

时间:2019-02-06 18:54:00

标签: sql-server powershell

我们正在尝试在“ SQL备份作业”步骤中替换备份位置(通过多台服务器运行Power Shell) 以下是我想使用的PS脚本:

# $Server is a file with SERVERNAME names 
$Jobs = Get-SQLAgentJob -ServerInstance 
$Servers Foreach ($job in $Jobs.Where{$_.Name -like 'DatabaseBackup' -and $_.isenabled -eq $true}) { 
    foreach ($Step in $Job.jobsteps.Where{$_.Name -like 'DatabaseBackup'}) { 
        $Step.Command = $Step.Command.Replace("Directory = N'C:\Backup\oldname1\oldname2\SERVERNAME'", "Directory = N'C:\Backup2\newname1\newname2\SERVERNAME'")
        $Step.Alter() 
        } 
}

1 个答案:

答案 0 :(得分:0)

看来这应该可行。我看到的唯一潜在问题如下:

  1. 命名的SQL实例:如果不使用默认实例名称,则$ servers变量将需要具有servername \ instancename格式

  2. 作业和步骤名称:如果您的作业名称和作业步骤名称不完全是数据库备份(不区分大小写),则-like运算符与确切的字符串结合使用将找不到匹配项。如果名称中包含数据库备份字符串,则在字符串的两边使用 -match“ databasebackup” 或-带有星号的类似符号会更安全。

否则,只要没有网络连接或权限问题,此代码就可以正常工作。