Dynamics CRM 2011 設置型 Excel エクスポート 動的ワークシートのパフォーマンス

みなさん、こんにちは。

今回は先日 US サポートチームブログで公開された記事を紹介します。

元記事 : Increasing the performance of Excel dynamic worksheets

Microsoft Dynamics CRM では、データをエクセルにエクスポートする機能を
利用することで、素早く、柔軟なレポートとして活用することができます。

ユーザーは、データを静的または動的ワークシートとしてエクスポートする
ことができますが、動的ワークシートとしてデータをエクスポートした場合、
設置型ではフィルター化されたビューに対してクエリを実行して、データを
取得することになります。

フィルター化されたビューをクエリした場合、クエリ実行者の情報を取得する
必要がありますが、ユーザー数が多い組織の場合には、パフォーマンスに
影響が出る可能性があります。SQL サーバーは、以下のクエリを利用して
クエリの実行ユーザーを特定します。

select @userGuid = s.SystemUserId
from SystemUserBase s
where s.DomainName = SUSER_SNAME()

クエリのパフォーマンスを向上させる方法としては、データベースに対して、
カスタムインデックスを作成することです。 上記のクエリの場合、以下の
カスタムインデックスが有効です。

※ YourOrgName_MSCRM を任意の組織データベース名に変更してください。
またインデックス名は任意のものに変更していただいて結構です。

CREATE NONCLUSTERED INDEX ix_SystemUserBase_DomainName ON
[YourOrgName_MSCRM].[dbo].[SystemUserBase] ( [DomainName] ) ;

このカスタムインデックスを作成することにより、DomainName を検索条件に
したクエリのパフォーマンスが向上します。

まとめ

今回の情報は設置型をご利用の場合にのみ有効ですが、事象に該当する
場合は、一度お試しください。尚、インデックスを作成することはデータの
変更操作にとってはパフォーマンスを低下させる要因になりえます。今回の
場合、ユーザーの新規作成時、およびドメインユーザー名の変更時にその
影響が出ますが、まずは検証環境でパフォーマンスの差異を確認して頂き、
本番環境に適用するかご検討ください。

‐ Dynamics CRM サポート 中村 憲一郎