После долгих ударов головой о стол я наконец наткнулся на ответ окольным путем.
Мои методы SQL_IsJobRunning и SQL_JobSucceeded используют sp_help_job в SQL, чтобы выяснить, выполняется ли еще задание и успешно ли оно выполнено. Я работал над сообщениями об успехе / ошибках, которые отображались на моем ярлыке, и когда я получал неправильные сообщения, я понял, что «current_execution_status» показывает, что работа была выполнена, но «last_run_outcome» еще не был обновлен к тому времени, когда мой Код искал значение. Поэтому я поставил паузу (Thread.Sleep (4000)) между этими двумя методами, чтобы дать базе данных шанс зарегистрировать last_run_outcome до того, как я его проверил.
Это решило мою проблему с сообщением об ошибке метки и имело приятный побочный эффект, также решив мою проблему с gridview. С паузой на месте вид сетки также успешно обновляется. Должно быть, что-то происходило слишком быстро, чтобы сетка могла правильно обновляться. Хотел бы я знать что. Возможно, метод BindRatesGrid () выполнялся до того, как данные были зафиксированы в базе данных.
// do nothing while waiting for job to finish
while (sqlAgent.SQL_IsJobRunning())
{ }
Thread.Sleep(4000);
if (sqlAgent.SQL_JobSucceeded())
{
lblStatus.Text = "Import Succeeded";
BindRatesGrid();
}
else
{
lblStatus.Text = "Import Failed. Please contact IT for failure details on SSIS import package.";
}