我想知道是否有一个尝试/真实的方法来报告从.Net应用程序到其用户的数据库调用的进度。我想知道是否甚至可以实际指示完成百分比,或者是仅仅显示“加载”动画以表明发生了什么的最佳/唯一方法?
此外,SQL2008是否根据任何人的知识解决了这个问题?
答案 0 :(得分:1)
你必须确定性地加载东西。例如,如果您知道您将获取大量数据,例如,您可能会执行以下操作:
- 计算所有记录的计数 - 他们500个 - 报告状态为500 /总% - 再多500个 - 报告状态为1000 /总% -...继续,直到你得到所有用户已取消
这对于不花时间的事情来说是非常浪费的,因为进入数据库这一事实只是开销的很大一部分。
答案 1 :(得分:1)
据我所知,没有办法做到这一点。我的建议是使用一个永远旋转的循环进度条。 Microsoft在SQL和Project中的数据库操作中使用它们。
这是一篇关于CodeProject的文章,其中包含以下各种内容:
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?