3

特定のエンティティのみに関する監査ログ データを削除することはできますか? 巨大な監査ログがあり、特定のエンティティのログ データを削除して削減したいと考えていましたが、他のエンティティのログは保持したいと考えています。

4

2 に答える 2

5

エンティティ タイプごとに監査ログ エントリを削除する方法はサポートされていません。監査による削除をサポートする唯一の方法は、日付によるものです (つまり、X 日付より古いすべてのレコード)。 *注意: SQL 環境によっては、使用可能な終了日が監査ログ パーティションの終了日に制限される場合があります。*

とはいえ、この要件を満たすためのサポートされていない方法があります。重要: CRM サーバーをオフラインにし、データベースをバックアップし、復元を試行する前にテストします。これは、Dynamics CRM 2011 SQL データベースでサポートされているアクションに反するため、私が提案することに対するサポートはありません。

監査ログはテーブルに格納されますdbo.AuditBase。このテーブルには拡張ベースがないため、監査エントリごとに考慮すべきレコードは 1 つだけです。

ObjectTypeCodeエンティティのが必要になります。次のスクリプトを実行して、データベースからこれを取得できます。

SELECT [EntityId],[Name],[ObjectTypeCode]
FROM [].[MetadataSchema].[Entity] ORDER BY Name

これでObjectTypeCode、以下のスクリプトの xxxx を値に置き換えて、スクリプトを実行するだけです。

DELETE FROM [].[dbo].[AuditBase] WHERE ObjectTypeCode = xxxx

特定のエンティティ タイプの監査レコードが削除されました。

于 2013-04-18T15:14:44.887 に答える
1

あなたが探しているものではないことは承知していますが、特定の日付より前のすべての監査データを削除するために呼び出すことができるDeleteAuditDataRequest API メッセージがあります。

特定のレコードを削除する限り、できるとは思いません。次のコードを試すと、次のエラーが表示されます。'Delete' メソッドはタイプ 'audt' のエンティティをサポートしていません。

orgService.Delete("audit",auditId);

オンプレミス環境の場合は、DB に直接アクセスでき、監査レコードをアーカイブしたり、SQL 経由で削除したりできます。

それが役立つことを願っています。

于 2013-04-18T15:05:15.237 に答える