SQLジョブが現在実行中であるかどうかを確認します。 "run_status"列が正しいかどうかチェックしますか?各列をループすることなくこれを行う簡単な方法はありますか?SQL Serverジョブのステータスを確認します
public int CheckAgentJob(string connectionString, string jobName)
{
SqlConnection dbConnection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand();
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "msdb.dbo.sp_help_jobactivity";
command.Parameters.AddWithValue("@job_name", jobName);
command.Connection = dbConnection;
using (dbConnection)
{
dbConnection.Open();
using (command)
{
SqlDataReader reader = command.ExecuteReader();
reader.Read();
Object[] values = new Object[reader.FieldCount];
int fieldCount = reader.GetValues(values);
int jobStatus = -1; // inactive
for (int i = 0; i < fieldCount; i++)
{
object item = values[i];
string colName = reader.GetName(i);
if (colName == "run_status")
{
if (values[i] != null)
{
jobStatus = (int)values[i];
break;
}
}
}
reader.Close();
return jobStatus;
}
}
}
@JeroenMostert MSDN
おかげから取られた(https://stackoverflow.com/help/tagging)あなたは '[msdb.dboを問い合わせることができ – Liam
。 sysjobactivity'](https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobactivity-transact-sql)を参照してください。それは文書化されている。ストアドプロシージャはちょうどいいです。 –
[ジョブのステータスを確認するにはどうすればよいですか?](https://stackoverflow.com/questions/200195/how-can-i-determine-the-status-of-a-job) – Liam