2012-04-12 28 views
3

私は2パートの質問を持っている:集計クエリの上限を超えましたか?

最初の質問:私はパフォーマンス上の理由から、レコードを照会するとき5,000レコードのクエリ制限がありますが、集計クエリをやっ限界があることを知っていますか?もしそうなら、それは何ですか?私はすべての上に見てきた

System.ServiceModel.FaultException 1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: AggregateQueryRecordLimit exceeded. Cannot perform this operation. (Fault Detail is equal to Microsoft.Xrm.Sdk.OrganizationServiceFault).

:私は、レコードの数を照会すると、一方のエンティティのために、私は39,000+レコードの結果を得ることができる唯一の必要がありますが、別のエンティティのために私のようなエラーメッセージが表示されますオンラインですが、集計/集計クエリのクエリ制限では何も見つかりません。

第2質問:パフォーマンスヒットなしに大量のレコードのCOUNTを照会する簡単な方法はありますか?私はカウントをすることはあまりにも多くのオーバーヘッドを必要とするとは思わないでしょう。制限がある場合、私の考えはループ内でページングを実装し、0レコードが返されるまで毎回ページ番号をインクリメントしながら、特定のページのカウントを取得することでした。しかし、これを試してみると、最初の<Fetch>タグのpagecountの属性は無視されるようです。

もっと簡単な方法があるのでしょうか?

答えて

3

最初の問題はほとんど話せませんが、someone on MSDN may have found a workaroundのように見えます。実用的なソリューションについては、特にリンクされたフォーラムポストを参照してください。

2番目の質問では、COUNTは比較的扱いが簡単です。多くの例については、MSDN article on FetchXML aggregatesを参照してください。

<fetch distinct='false' mapping='logical' aggregate='true'> 
    <entity name='opportunity'> 
     <attribute name='name' alias='opportunity_count' aggregate='count'/> 
    </entity> 
</fetch> 

次のようにそのクエリのために生成されたSQLは次のようになります。

SELECT 
    COUNT(*) AS opportunity_count 
FROM 
    Opportunity 
+0

ありがとうございました。私が言ったように、私は既にカウントを返す非常に単純なFetchXMLクエリを持っている、私はそれがちょうど総計が50,000を超えると思う。 DBの変更は必要ありませんが、唯一の選択肢かもしれません。それ、またはレジストリの変更。 – lhan

+0

@ lhan16:OK、あなたが今言っていることが分かります。これと直接のデータベースクエリの外に、私が言うことができるのはすべて "Good luck"です。 –

+2

私は何をするつもりだと思います(DBの変更やレジストリの変更はこの時点でオプションではないと言われています)、 "クエリ制限を超過しました"というエラーをキャッチし、 "50,000+" 。入力とリンクをありがとう! – lhan

関連する問題