Microsoft Dynamics CRMで Count 属性を 20000 に設定すると、検索結果の数は 5000 になります。

この記事では、FetchXml スキーマで Count 属性を 20,000 に設定した場合でも、返される検索結果の数が 5,000 であるという問題の解決策について説明します。

適用対象: Microsoft Dynamics CRM 2011
元の KB 番号: 911510

重要

この資料には、レジストリの編集方法が記載されています。 レジストリを変更する前に必ずレジストリのバックアップを作成してください。 また、問題が発生した場合に備えて、レジストリの復元方法を理解しておいてください。 レジストリをバックアップ、復元、および変更する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

現象

FetchXml スキーマの 属性をCount使用して、Microsoft Dynamics CRM データベースに対するクエリを作成します。 次に、属性を Count 20,000 に設定します。 このシナリオでは、返される検索結果の数は 5,000 です。 さらに、SQL 言語のSELECTステートメントは、属性と 属性に設定されている内容にCount関係なく常SELECT TOP 5001に行Pagingわれます。

原因

この問題は、FetchXml スキーマを使用して結果の検索セットを取得し、属性が moreRecords 1 に設定されている場合に発生します。 値 1 は、5,000 を超えるレコードが使用可能であることを示します。 Microsoft Dynamics CRMではPaging、属性のページ制限は 5,000 です。

解決方法

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 Microsoft のサポート エンジニアが、特定の手順の機能をわかりやすく説明します。 ユーザー固有の要件に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。

この問題を解決するには、 属性を Paging 使用してレコードを取得します。 次に、結果の moreRecords 検索セットの 属性を使用して、次のページを返す必要があるかどうかを判断します。

たとえば、次のコードは、この問題を解決する方法を示しています。

moreRecords = true;
i = 0;
while(moreRecords)
{
get page i
if(result has more records)
i++
else
moreRecords = false
}

詳細

警告

レジストリ エディタや他の方法を使用してレジストリを変更する際、適切に変更しないと重大な問題を引き起こす可能性があります。 場合によっては、オペレーティング システムの再インストールが必要になります。 こうした問題の修復について、マイクロソフトはいかなる保証もいたしません。 レジストリの変更はユーザー自身の責任において行ってください。

ページ制限を 5,000 未満の値に調整するには、レジストリに MaxRowsPerPage DWORD 値を追加します。 これを行うには、次の手順を実行します。

  1. [スタート][実行] の順に選択し、[開く] ボックスに「regedit」と入力し、[OK] を選択します。

  2. 次のレジストリ サブキーを見つけてクリックします。

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM

  3. [ 編集 ] メニューの [ 新規] をポイントし、[ DWORD 値] を選択します。

  4. 「MaxRowsPerPage」と入力し、Enter キーを押します。

  5. [MaxRowsPerPage] を右クリックし、[変更] を選択します。

  6. [ 値データ ] ボックスに 5,000 以下の数値を入力し、[ OK] を選択します

  7. [ファイル] メニューの [終了] を選択します。

ページング機能をオフにし、5,000 のパラメーターを MaxRowsPerPage 無視するには、レジストリに TurnOffFetchThrottling DWORD 値を追加します。 これを行うには、次の手順を実行します。

注:

これらの手順を実行すると、コンピューターでパフォーマンスの問題が発生する可能性があります。

  1. [スタート][実行] の順に選択し、[開く] ボックスに「regedit」と入力し、[OK] を選択します。

  2. 次のレジストリ サブキーを見つけてクリックします。

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM

  3. [ 編集 ] メニューの [ 新規] をポイントし、[ DWORD 値] を選択します。

  4. 「TurnOffFetchThrottling」と入力し、Enter キーを押します。

  5. TurnOffFetchThrottling を右クリックし、[変更] を選択します。

  6. [ 値データ ] ボックスに 0 以外の数値を入力し、[OK] を選択 します

    注:

    手順 6 では、フェッチ ステートメントの Count 属性で指定されたレコード数を取得できます。

  7. [ファイル] メニューの [終了] を選択します。