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

时间:2011-11-03 11:11:13

标签: c# asp.net sql-server

我在SqlServer(2005+)中有SP使用cursor并做一些事情(10,000行)

我需要像进度条这样的东西(在我的c#网站中查看。)。

我可以将10,000除以100,这样每1000条记录就可以了(使用sql print命令):process of another 1000 is done !!!

但是我想在我的asp.net网站上看​​到那个印刷品(每个印刷品)。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

[WebMethod]
public ProcessStatus GetProcessStatus(string reference)

对asynch webmethod的调用将启动进程运行并传入参考编号以标识自身。这反过来调用了一个存储过程,该过程使用游标迭代的更新来更新另一个表'reference','count'和'status'

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");
        }
    }

希望有所帮助。

相关问题