7

MSCRM 2011 でレポートを実行する場合、データ ソースには SQL または Fetch の 2 つのオプションがあります。

SSRS 実行ログでは、レポートを実行したユーザーは常にサービス アカウントです。

フェッチを使用すると、レポート実行ログに、レポートを実行したユーザーのフル ネームを含むパラメータ CRM_FullName があります。

SQL ソースを使用する場合、CRM_FullName パラメータはありません。誰がレポートを実行したかを知るにはどうすればよいですか? フィルターされたビューは私が誰であるかを知っているので、知る方法があるに違いありません。

4

3 に答える 3

6

実際には、この情報を見つける方法はありません。MSCRM のレポートを作成するときは、「MSCRM データ コネクタ」と呼ばれるコネクタを使用します。これは、SSRS インスタンスの ExecutionLogs3 ビューの AdditionnalInfo 列で確認できます。このコネクタを使用してレポートを表示しようとすると、ユーザー名とパスワードの入力を求められます。それが興味深いところです。

レポートは実際にはユーザー名/パスワードを期待していません! 実際、systemuserid (guid) をユーザー名として受け取り、organizationid (guid) をパスワードとして受け取ることを想定しています。次に、MSCRM_CONFIG データベースで組織データベース設定を検索します。次に、組織データベースに入り、単純にset context_info SYSTEMUSERID. 最後に、filteredviews は、context_info を取得する「[dbo].[fn_FindUserGuid]」という名前の関数を呼び出しています。これが、サービス アカウントとして接続されている間、フィルター処理されたビューが適切に機能する方法です。

ご想像のとおり、SSRS のユーザー名とパスワードのプロンプトはどこにも記録されないため (おそらくセキュリティ上の理由から)、レポートを実行したユーザーを知ることはできません。

誰がレポートを実行したかをログに記録するために私が見つけた最良のオプションは、フィルター処理されたビュー (またはそのままのテーブル) で選択ステートメントを作成するストアド プロシージャを実際に作成し、ステートメントを別のテーブルにログインすることです。プロシージャ パラメータと context_info()。次に、SSRS で、フィルター処理されたビューに直接移動する代わりに、その関数を呼び出します。

于 2012-04-27T13:47:52.157 に答える
5

SQLソースが使用されている場合、ユーザーのフルネームの取得を含むように回答が編集されました。

  1. パラメーター UserID をデフォルト値として登録します。

    =ユーザー!ユーザーID

  2. データセットで次のクエリを使用します

    ドメイン名、フルネームを選択

    FROM SystemUserBase

    WHERE (ドメイン名 = @ユーザー ID)

  3. 次に使用します

    =フィールド!フルネーム.値

あなたのレポートで。

CRM では、ユーザー データは SystemUserBase テーブルに格納されます。DomainName 列は、レポートの User!UserID に格納されている実際のDomain\Usernameです。ビューを使用したい場合は、 SystemUserBaseテーブルの代わりにFilteredSystemUserビューを使用してください。

fetchxml については、以下を試してください: operator operator='eq-userid'は、現在のユーザーと等しいことを意味します。

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
<entity name='team'>
<attribute name='name' />
<attribute name='businessunitid' />
<attribute name='teamid' />
<order attribute='name' descending='false' />
<link-entity name='teammembership' from='teamid' to='teamid' visible='false' intersect='true'>
<link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='user'>
    <attribute name='fullname' />
    <attribute name='systemuserid'/>
        <filter type='and'>
        <condition attribute='systemuserid' operator='eq-userid' />
        </filter>
</link-entity>
</link-entity>
</entity>
</fetch>

次に、レポートで次のコードを式で使用して、ユーザーのフルネームを取得できます

=First(Fields!user_fullname.Value, "GetUserData")

ここで、データセットはGetUserDataと呼ばれます

于 2013-04-30T14:23:12.657 に答える
0

ユーザーのログイン名で十分ですか? つまり、次のようなものを使用できます ="Generated by " & User!UserIDか?

于 2012-05-02T22:58:54.397 に答える