2011-01-24 19 views
2

私のasp.netアプリケーションでは、フォームを送信しているときにストアドプロシージャがどのくらいの時間かかるかをユーザーに示す必要があります。私はasp.netアプリケーションから見つけることができる方法はありますか?ちょうど私たちがSQL Serverで推定コストを持つクエリプランを見積もっているように。 asp.netのWebページに表示できますか?asp.netのSPの見積もりコスト

+0

推定クエリプランには時間が表示されません。プラン内の他の機能に関連して情報をロードする "コスト"を示します。それに「時間」を付けることはできません。 –

+0

@マイケル:あなたの入力をありがとう、私はasp.net webformのコストを示すことができる方法はありますか? – Zerotoinfinity

+2

多くの変数が使用されています。これは、オプティマイザの計算外(システム上のユーザー数、他のクエリが同時に実行されているなど)の外にあります。 –

答えて

0

あなたはそれを実行しないだろうが、XMLを返すことになる(クエリを実行し、コマンド

set showplan_xml on 

を使用して可能性があります。あなたは、あなたが後にある推定属性に対してXMLを解析することができます。

select top 10 * from master..spt_values 

出力

<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.0" Build="9.00.3080.00"> 
    <BatchSequence> 
    <Batch> 
     <Statements> 
     <StmtSimple StatementText="select top 10 * from master..spt_values&#xD;&#xA;" StatementId="1" StatementCompId="1" StatementType="SELECT" StatementSubTreeCost="0.00333664" StatementEstRows="10" StatementOptmLevel="TRIVIAL"> 
      <StatementSetOptions QUOTED_IDENTIFIER="false" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="false" ANSI_NULLS="false" ANSI_PADDING="false" ANSI_WARNINGS="false" NUMERIC_ROUNDABORT="false" /> 
      <QueryPlan CachedPlanSize="9" CompileTime="0" CompileCPU="0" CompileMemory="56"> 
      <RelOp NodeId="0" PhysicalOp="Top" LogicalOp="Top" EstimateRows="10" EstimateIO="0" EstimateCPU="1e-006" AvgRowSize="68" EstimatedTotalSubtreeCost="0.00333664" Parallel="0" EstimateRebinds="0" EstimateRewinds="0"> 
       <OutputList> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="name" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="number" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="type" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="low" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="high" /> 
       <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="status" /> 
       </OutputList> 
       <Top RowCount="0" IsPercent="0" WithTies="0"> 
       <TopExpression> 
        <ScalarOperator ScalarString="(10)"> 
        <Const ConstValue="(10)" /> 
        </ScalarOperator> 
       </TopExpression> 
       <RelOp NodeId="1" PhysicalOp="Clustered Index Scan" LogicalOp="Clustered Index Scan" EstimateRows="10" EstimateIO="0.0142361" EstimateCPU="0.0027376" AvgRowSize="68" EstimatedTotalSubtreeCost="0.00333564" Parallel="0" EstimateRebinds="0" EstimateRewinds="0"> 
        <OutputList> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="name" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="number" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="type" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="low" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="high" /> 
        <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="status" /> 
        </OutputList> 
        <IndexScan Ordered="0" ForcedIndex="0" NoExpandHint="0"> 
        <DefinedValues> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="name" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="number" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="type" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="low" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="high" /> 
         </DefinedValue> 
         <DefinedValue> 
         <ColumnReference Database="[master]" Schema="[dbo]" Table="[spt_values]" Column="status" /> 
         </DefinedValue> 
        </DefinedValues> 
        <Object Database="[master]" Schema="[dbo]" Table="[spt_values]" Index="[spt_valuesclust]" /> 
        </IndexScan> 
       </RelOp> 
       </Top> 
      </RelOp> 
      </QueryPlan> 
     </StmtSimple> 
     </Statements> 
    </Batch> 
    </BatchSequence> 
</ShowPlanXML> 
ため

のサンプルXML

上記はあなたのリクエストの文字通りの解釈ですが、「コスト」は意味がありません。これは、測定単位も時間との相関もない統計値です。

ベスト

+0

予想される行の合計数と、どのような種類の結合が含まれているかを知ることは多少役立ちますが、手動で計算して多くの条件を考慮する必要があります。 – RichardTheKiwi

+0

あなたの援助ありがとう、私はそれを – Zerotoinfinity

4

あなたが唯一、過去の実行の記録を取ることによって、時間を見積もることができます...彼らはXMLプランを返す開始しているため作業を停止(コネクションプーリングと悪化し)、他のクエリLEST新しい接続を使用するにはユーザーに平均時間を伝えます。

Dynamic Management Views and Functionsを使用して、このSPについてSQL Serverに照会することもできます。

+0

+1それを行うのが良い方法を利用することができると思う。このページには、「過去の実績は将来の結果の保証ではない」という小文字のテキストも追加する必要があります*;) –

関連する問題