在Asp.net中获取长期执行的SP的进度状态

本文关键字:SP 状态 执行 net Asp 获取 | 更新日期: 2023-09-27 18:13:06

我在SqlServer(2005+(中有SP,它使用cursor并做一些事情(在10000行上(

我需要一个类似进度条的东西(在我的c#网站中查看(。

我可以取10000除以100,这样它将每做1000条记录(使用sql print命令(:process of another 1000 is done !!!

但我想在我的asp.net网站上看到这张照片(每一张新的照片(。

如何获取打印命令/或者有更好的方法吗?

在Asp.net中获取长期执行的SP的进度状态

我们用来实现类似东西的过程稍微复杂一点,但它确实有效。

例如,我们创建了一个具有多种方法的Web服务;

[SoapDocumentMethod(OneWay = true), WebMethod]
public void StartUpdate(string reference)
[WebMethod]
public ProcessStatus GetProcessStatus(string reference)

对asynch-webmethod的调用将启动进程运行,并传递一个参考号来标识其自身。这反过来调用了一个存储过程,该过程使用游标迭代的更新来更新具有"引用"、"计数"answers"状态"的另一个表

然后,GetProcessStatus将传入此引用并传回当前计数和状态。如果状态已完成,我们可以继续,或者,您可以在此时使用"计数"来更新状态。这方面的一个例子;

protected void Page_Load(object sender, EventArgs e)
    {
        this.JavaScript.Text = string.Format("<script>setTimeout('"{0}'", {1});</script>", 
            this.Page.GetPostBackClientEvent(this.btnRefresh, ""), 3000);

        ProcessStatus status= Class.GetProcessStatus(reference);
        lblCount.Text = status.Count.ToString();

        if (import.Status == (int)ProcessStatus.Status.Complete)
        {
            Globals.GoUrl("/Import/File/Map.aspx");
        }
    }

希望能有所帮助。