从.Net调用SQL的进度条

时间:2009-04-15 18:54:36

标签: asp.net sql progress-bar

我想知道是否有一个尝试/真实的方法来报告从.Net应用程序到其用户的数据库调用的进度。我想知道是否甚至可以实际指示完成百分比,或者是仅仅显示“加载”动画以表明发生了什么的最佳/唯一方法?

此外,SQL2008是否根据任何人的知识解决了这个问题?

3 个答案:

答案 0 :(得分:1)

你必须确定性地加载东西。例如,如果您知道您将获取大量数据,例如,您可能会执行以下操作:

- 计算所有记录的计数 - 他们500个 - 报告状态为500 /总% - 再多500个 - 报告状态为1000 /总% -...继续,直到你得到所有用户已取消

这对于不花时间的事情来说是非常浪费的,因为进入数据库这一事实只是开销的很大一部分。

答案 1 :(得分:1)

据我所知,没有办法做到这一点。我的建议是使用一个永远旋转的循环进度条。 Microsoft在SQL和Project中的数据库操作中使用它们。

这是一篇关于CodeProject的文章,其中包含以下各种内容:

http://www.codeproject.com/KB/vb/sql2005circularprogress.aspx?fid=324397&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2205952

Adam Berent

答案 2 :(得分:0)

您可以使用raiserror和no wait选项将消息发送回远程调用方而不结束sql事务。当然这会破坏通常的try / catch惯例,因此建议谨慎。

另一方面,“db调用”也可以指恢复或备份操作,在这种情况下,您只需使用SMO(服务器管理对象)库中的progress事件即可。

此外,可以使用诸如Linq之类的ORM解决方案来处理“db调用”,例如批量更新操作。如果是这种情况,那么这个答案可能很有用: How can I get a percentage of LINQ to SQL submitchanges?