在 ASP.NET 页面上跟踪 SQL Server 作业的进度
Posted
技术标签:
【中文标题】在 ASP.NET 页面上跟踪 SQL Server 作业的进度【英文标题】:Track progress of a SQL Server Job on an ASP.NET page 【发布时间】:2018-12-19 14:42:42 【问题描述】:我有一个 ASP.net 页面,它上传一个 Excel 文件,然后执行一个 SQL Server 作业,然后启动一个 SSIS 包来导入它。 我可以检查 Job 是否启动或启动失败,但是如何跟踪它的进度,或者至少知道它是否已成功完成运行并在 ASP.net 页面上显示结果?
我的代码如下:
protected void ProcessData(int num)
SqlConnection jobConnection;
SqlCommand jobCommand;
SqlParameter jobReturnValue;
SqlParameter jobParameter;
int jobResult;
//SSIS CONNECTION
jobConnection = new SqlConnection("Data Source=.\\XX_XXX;Initial Catalog=msdb;Integrated Security=SSPI");
jobCommand = new SqlCommand("sp_start_job", jobConnection);
jobCommand.CommandType = CommandType.StoredProcedure;
jobReturnValue = new SqlParameter("@RETURN_VALUE", SqlDbType.Int);
jobReturnValue.Direction = ParameterDirection.ReturnValue;
jobCommand.Parameters.Add(jobReturnValue);
jobParameter = new SqlParameter("@job_name", SqlDbType.VarChar);
jobParameter.Direction = ParameterDirection.Input;
jobCommand.Parameters.Add(jobParameter);
jobParameter.Value = "RunXXX_Package0" + num;
jobConnection.Open();
jobCommand.ExecuteNonQuery();
jobResult = (Int32)jobCommand.Parameters["@RETURN_VALUE"].Value;
switch (jobResult)
case 0:
Label2.Text = "SQL Server Agent job, RunXXX_Package0" + num + " started successfully.";
break;
default:
Label2.Text = "SQL Server Agent job, RunXXX_Package0" + num + " failed to start.";
break;
jobConnection.Close();
【问题讨论】:
【参考方案1】:让 SSIS 包将其进度写入执行日志(或历史)表(您必须设计)。
然后让您的 ASP 页面读取表格。
【讨论】:
是的,这是我正在考虑的一个选项,我想知道它 SSIS 有某种额外的 API/回调函数来通知调用者它的进度或至少结果...... 我不知道。 我也是。 “sp_start_job”过程只返回 0 或 1,无论 Job 启动还是失败 如果您使用的是项目部署模型,您可以让 asp 页面查询 SSISDB 中的某个表以查看进度。 我可以在 SSIS 中实现登录到表中,然后我可以简单地查询 dbo.sysssislog 表以查找正确的消息(至少是“PackageEnd”事件...)【参考方案2】:您可以通过投票[sp_help_job][1]
获取信息:
EXEC msdb.dbo.sp_help_job @Job_name = 'YourJobName'
然后检查 execution_status
0 - Returns only those jobs that are not idle or suspended.
1 - Executing.
2 - Waiting for thread.
3 - Between retries.
4 - Idle.
5 - Suspended.
7 - Performing completion actions.
和last_run_outcome
0 = Failed
1 = Succeeded
3 = Canceled
5 = Unknown
【讨论】:
以上是关于在 ASP.NET 页面上跟踪 SQL Server 作业的进度的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL asp.net 页面导出数据到 excel 会截断 < 字符上的数据
JavaScript、asp.net 和 Sql Server
使用 C# 在 ASP.NET 中检查 SQL Server 表中的列值是不是为空
ABP vue+asp.net core yarn serve报 Cannot find module 'typescript/package.json错误