阿仁's Blog

使用 PowerShell 執行 SQL Server Job.

| Comments

如何能夠用 PowerShell 的指令來執行 SQL Server 中,已設定好的 Job 呢?
來~ 直接看 Code。

#Start SQL Job My_Job

$ServerName = 'My_SQL_Server'
$JobName = 'My_Job'
$StepName = 'Step_one'

Write-Host "Starting SQL Agent Job $($JobName) on Server $($ServerName)"

$date = Get-Date
Write-Host "It is now: $($date)"

#Load the SMO Model

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null

$srv = New-Object Microsoft.SqlServer.Management.SMO.Server("$ServerName")
$job = $srv.jobserver.jobs["$JobName"] 

if ($job) { 
    if($StepName -ne '') {
        $job.Start($StepName)
    } else {
        $job.Start()
    }
    Write-Verbose "Job $($JobName) on Server $($ServerName) started"
}

#wait for SQL Job

Start-Sleep -s 5

主要的重點在於,利用 SQL Server 提供的 SMO 模組來操作 SQL Server.
不過這段程式碼要注意的點是,他只是發指令出去叫 SQL Server 執行指定 Job,
並不會等待 Job 執行完才接續執行後面的程式碼。
所以後面放了一個 Start-Sleep 給 Job 時間執行。

Reference

https://community.spiceworks.com/topic/1752564-start-a-sql-agent-job-with-powershell

https://docs.microsoft.com/zh-tw/sql/relational-databases/server-management-objects-smo/sql-server-management-objects-smo-programming-guide?view=sql-server-2017

Comments

comments powered by Disqus