1

我想知道是否有一种经过验证的/真实的方法可以将 .Net 应用程序的数据库调用进度报告给它的用户。我想知道是否甚至可以实际指示完成百分比,或者是最好/唯一的方法来简单地显示“加载”动画以指示正在发生的事情?

另外,SQL2008 是否有人知道这个问题?

4

3 回答 3

1

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

- 获取所有记录的计数 - 获取 500 条记录 - 报告状态为 500/total % - 再获取 500 条 -report status 为 1000/total % -... 继续直到您获得所有用户拥有的记录取消

这对于根本不需要时间的东西来说是非常浪费的,因为仅仅访问数据库这一事实就是开销的很大一部分。

于 2009-04-15T18:59:06.607 回答
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

亚当·贝伦特

于 2009-04-15T19:02:28.347 回答
0

您可以使用带有 no wait 选项的 raiserror 将消息发送回远程调用方,而无需结束 sql 事务。当然,这将打破通常的 try/catch 约定,因此建议谨慎。

另一方面,“数据库调用”也可以指恢复或备份操作,在这种情况下,您可以简单地使用 SMO(服务器管理对象)库中的进度事件。

此外,可以使用诸如 Linq 之类的 ORM 解决方案来处理诸如批量更新操作之类的“数据库调用”。如果是这种情况,那么这个答案可能很有用: 如何获得 LINQ to SQL submitchanges 的百分比?

于 2011-02-13T09:15:36.997 回答