Home > MSSQL > 使用powershell获取MSSQL agent job的script

使用powershell获取MSSQL agent job的script

最近RDS开放定义作业(job)的功能给客户,有一个很重要的步骤就是需要将主库的job定期同步到备库,所以需要获得job的定义;在MSSMS工具中通过界面管理,可以很简单方便的得到job的定义:

但如果在面对上百个的job或者需要将其程序化的时候,界面操作就不能完成任务了,所以需要用命令来实现获取job的script:

mssql提供了一个SMO组件,该组件可以获取数据库object的定义:

  #Create a NEW SMO instance FOR this $ServerName   
    $srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" 127.0.0.1,3001  
    #Script OUT each SQL Server Agent Job FOR the server    
    $jobs = $srv.JobServer.Jobs
    #Using regex invocation courtesy OF Jan Goyvaerts at regular-expressions.info  
    $regex = [regex] '[ ^a-zA-Z- ]'   
    foreach ($job IN $jobs)	
    {	
    $jobname = ".$OutputFolder" + $Job.Name+ ".job.sql"	
    $job.Script() | Out-File $jobname

我们将ip和端口传入给smo,然后将实例中的所有job定义输出到文件,这样就可以自动化的将job的定义得到。

Categories: MSSQL Tags:
  1. No comments yet.
  1. No trackbacks yet.
You must be logged in to post a comment.