我試圖在Listview上編寫作業監視器,我從msdb數據庫中的sysjob
和sysjobhistory
表中獲取信息。我如何知道列表視圖中的工作時間?我如何知道在列表視圖(SQL Server 2000)上發生作業
我不明白run_time列。我想顯示在頂行的最後一份工作,並在圖中所示,當工作出現時間顯示 (我有2個工作蕨菜同)
形式sysjobhistory
顯示數字代碼,我不知道它意思是如70000,71000 ... 但我想顯示時間爲上午11點,上午10點...如圖所示。
我想連續顯示信息,按照時間表重複監視JOB。
public void GetJobsAndStatus()
{
string sqlJobQuery = "select j.job_id, j.name, j.enabled, jh.run_status, jh.message, jh.run_date, jh.step_name, jh.run_time from sysjobs j inner join sysjobhistory jh on j.job_id = jh.job_id";
// create SQL connection and set up SQL Command for query
using (SqlConnection _con = new SqlConnection("server=10.15.13.70;database=msdb;user id=sa;pwd="))
using (SqlCommand _cmd = new SqlCommand(sqlJobQuery, _con))
{
try
{
// open connection
_con.Open();
// create SQL Data Reader and grab data
using (SqlDataReader rdr = _cmd.ExecuteReader())
{
// as long as we get information from the reader
while (rdr.Read())
{
Guid jobID = rdr.GetGuid(0); // read Job_id
string jobName = rdr.GetString(1); // read Job name
byte jobEnabled = rdr.GetByte(2); // read Job enabled flag
int jobStatus = rdr.GetInt32(3); // read run_state from jobhistory
string jobMessage = rdr.GetString(4);
int jobRunDate = rdr.GetInt32(5);
string jobStepName = rdr.GetString(6);
int jobRunTime = rdr.GetInt32(7);
String[] lviData = new String[]
{
jobID.ToString(),
jobName.ToString(),
jobStepName.ToString(),
jobMessage.ToString(),
jobStatus.ToString(),
jobRunDate.ToString(),
jobRunTime.ToString(),
};
ListViewItem lvi = new ListViewItem(lviData);
listView1.Items.Add(lvi);
}
rdr.Close();
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
// close connection again
_con.Close();
// return _jobs;
}
}
結果未達到線的排列等預期。
請建議該怎麼辦。(用MS Visual Studio 2008中(C#))謝謝。
並感謝您的過去幫助。
哦,所以對不起,我混淆了一件小事。 – Fernatit 2010-11-22 07:31:46
好吧,我真的很困惑我的項目,但現在我知道了一些字符串解析已經。當我單擊按鈕調用GetJobsAndStatus()時,形成此代碼結果是Fern和TestJob(最後一個屏幕快照)is'n排序與企業管理器中顯示的相同。我該怎麼做? – Fernatit 2010-11-22 09:02:53
是的,好 - 這是你從那個查詢中得到的輸出 - 你想從這個輸出中獲得什麼?不清楚你到底想要什麼...... – 2010-11-22 09:13:24