在c#中计算执行存储过程之前的执行时间

时间:2013-11-17 05:34:33

标签: c# .net stored-procedures sql-server-2008-r2 progress-bar

我正在研究C#.net应用程序

我正在从我的c#代码执行存储过程,完成执行需要将近2分钟。我在后端使用SQL Server 2008 R2。所以我想显示一个进度条,显示存储过程的执行进度。为此,我需要计算执行存储过程的执行时间。那么我有什么方法可以计算执行时间+这个应用程序在我的客户端上运行,因此存储过程的执行时间因客户端而异。那么请给我建议或我搜索如何做到这一点的方式?

感谢您提前提供的宝贵意见

2 个答案:

答案 0 :(得分:3)

好问题。以下是您可能会考虑的一些选项。

一个。这是对查询计划的一个很好的解释。      How do I obtain a Query Execution Plan?

B中。在存储过程中添加反馈(即报告回表)。我假设有一组很多任务。尝试在存储过程中的每个任务之间进行报告,以便为您提供更精细的度量。如果它没有反馈到表格,它甚至可以将其分解为不同的存储过程。

℃。一旦您的程序运行一次,您可能有最佳的估计时间。

d。优化您的存储过程。我可以想象如果这种情况很快就会对所有人有好处。这意味着你的估计会减少!需要考虑的事项:

希望有一些帮助。

答案 1 :(得分:2)

根据您提供的信息,我只能猜测,但我仍然只看到两种方法:

  • 如果过程的执行长度取决于传递给它的参数(猜测:字节数组的长度),则可以测量某些参数级别的平均执行长度,这些参数可以是硬编码的(或者你可以更好在您的应用程序中从启动时的文件解析它,然后用于预期运行时估计,=>随着时间的推移,用户会看到完成所需的时间。
  • 如果它不是基于传递的参数,而是基于数据库服务器负载,您可以调用服务器获取其cpu / harddrives负载级别,或者甚至根据最近时间的过程调用量来估计这些参数=>然后,这可能会导致您的执行时间估计。

我无法弄清楚任何更具体的内容,除非您例如共享过程调用及其生成的sql,并具有表和规模的理想细节。