以下のコードを使用して、正常に動作している SSIS から ssis ジョブを実行していますが、ジョブを実行した後、ジョブが終了するのを待ってからさらに続行する必要があります
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") |Out-Null;
[Microsoft.SqlServer.Management.Smo.Server]$sqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server $HostName;
if([String]::IsNullOrEmpty($sqlServer.Urn))
{
Write-Host "`nThe hostname provided is not a valid SQL Server instance. Did you mistype the alias or forget to add the instance name?`n";
Exit;
}
else
{
[String]$databaseInstance = $sqlServer.JobServer.Urn.Value.Substring($sqlServer.JobServer.Urn.Value.IndexOf("'") + 1, `
$sqlServer.JobServer.Urn.Value.IndexOf("'", ($sqlServer.JobServer.Urn.Value.IndexOf("'")) `
- ($sqlServer.JobServer.Urn.Value.IndexOf("'"))));
}
Write-Host "Enumerating jobs on server ...";
[Microsoft.SqlServer.Management.Smo.Agent.Job]$job = ($sqlServer.JobServer.Jobs | ? { $_.Name -eq $JobName });
if($job -eq $null)
{
Write-Host "`nNo such job on the server.`n";
Exit;
}
# Finally invoke the job. Use the job history (in SSMS) to verify the success of the job.
Write-Host "Executing job (the script doesn't wait for the job to finish but it should)...`n`n";
$job.Start();
*$job.Start(); の後にどのように待つことができますか? ジョブが完了したことを確認して、先に進むことができますか?
以下のコードを実行していますが、正しく動作していません。
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$server = new-object "Microsoft.SqlServer.Management.Smo.Server" "ServerName"
$job = $server.JobServer.Jobs["YourJobName"]
$now = Get-Date
do
{
Start-Sleep -Seconds 1
$job.Refresh()
$jobstat = $job | select CurrentRunStatus
$stat = $jobstat.CurrentRunStatus
WRITE-HOST $stat
}
while($stat -eq "Executing")
$job | select Name,CurrentRunStatus,LastRunDate