【发布时间】:2009-04-15 18:54:35
【问题描述】:
我想知道是否有一种经过验证的/真实的方法可以将 .Net 应用程序的数据库调用进度报告给它的用户。我想知道是否甚至可以实际指示完成百分比,或者是最好/唯一的方法来简单地显示“加载”动画以指示正在发生的事情?
另外,SQL2008 是否有人知道这个问题?
【问题讨论】:
标签: asp.net sql progress-bar
我想知道是否有一种经过验证的/真实的方法可以将 .Net 应用程序的数据库调用进度报告给它的用户。我想知道是否甚至可以实际指示完成百分比,或者是最好/唯一的方法来简单地显示“加载”动画以指示正在发生的事情?
另外,SQL2008 是否有人知道这个问题?
【问题讨论】:
标签: asp.net sql progress-bar
您必须确定性地加载内容。例如,如果您知道您将获取大量数据,例如,您可能会执行以下操作:
-获取所有记录的计数 - 获得 500 个 -报告状态为 500/total % - 获得 500 多个 - 报告状态为 1000/total % -...继续,直到你得到他们所有的用户都取消了
这对于根本不需要时间的事情来说是非常浪费的,因为访问数据库这一事实本身就是开销的很大一部分。
【讨论】:
据我所知,没有办法做到这一点。我的建议是使用永远旋转的圆形进度条之一。 Microsoft 在 SQL 和 Project 的数据库操作中使用这些。
这是一篇关于 CodeProject 的文章,其中包含各种内容:
亚当·贝伦特
【讨论】:
您可以使用 raiserror 和 no wait 选项来将消息发送回远程调用者而不结束 sql 事务。当然,这将打破通常的 try/catch 约定,因此建议谨慎。
另一方面,“数据库调用”也可以指恢复或备份操作,在这种情况下,您可以简单地使用 SMO(服务器管理对象)库中的进度事件。
此外,可以使用诸如 Linq 之类的 ORM 解决方案来处理诸如批量更新操作之类的“数据库调用”。如果是这种情况,那么这个答案可能很有用: How can I get a percentage of LINQ to SQL submitchanges?
【讨论】: