1. 程式人生 > >讓天下沒有難用的資料庫 » 使用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的定義得到。