Dynamics 365 Online-Delete Audit History Data
Dynamics 365 CE自带的Audit功能,虽然不会给我们的业务流程带来显著变化,但是这个功能对于我们追溯数据变化的历史,诊断定制触发的执行,以及数据还原等,都是不可或缺的关键先生。尤其是涉及到多部门合作,在数据变化方面产生“矛盾”的时候,这个功能将成为关键的证据。但是万事有利必有弊,这些Audit log,在SQL里对应的是表记录,也就是说,需要消耗的你的Storage资源。在Dynamics 365 CE从V8升级到V9之后,你也许会发现升级前够用的Storage,在升级之后不够用了,这个的原因肯定方方面面都有,其中一个可能的情况就是Audit log占用的Storage变多了。如果在对环境分析之后,发现真的是由于Audit log的事,那么就继续我们这次的主题,Delete Audit。
CE自带的有Audit Log Management管理功能,里面会显示每个季度的Audit Log Size,并且还提供Delete功能。

如果你发现Audit Size太大,可以考虑先把时间比较久的Audit删除掉,以释放一部分Storage。那么如果Audit Size是最近一个季度的比较大呢?由于Audit Log Management的删除功能只是以时间段为条件,不能再细化到Entity级别,这就导致我们需要考虑如何删除某个Entity的Audit,以及如何删除某个Entity,某个时间段之前的Audit。
Dynamics 365目前关于Delete Audit提供了两个API:DeleteRecordChangeHistoryRequest和DeleteAuditDataRequest。
DeleteAuditDataRequest是V9以前就有的API,具体的功能有点类似上面的Audit Log Management。就是给一个EndDate,然后发送请求删除这个时间点之前所有的Audit。下面给个官方Code帮助理解:
// Get the list of audit partitions.
var partitionRequest =(RetrieveAuditPartitionListResponse)svc.Execute(new RetrieveAuditPartitionListRequest());
AuditPartitionDetailCollection partitions = partitionRequest.AuditPartitionDetailCollection; // Create a delete request with an end date earlier than possible.
var deleteRequest = new DeleteAuditDataRequest();
deleteRequest.EndDate = new DateTime(, , ); // Check if partitions are not supported as is the case with SQL Server Standard edition.
if (partitions.IsLogicalCollection)
{
// Delete all audit records created up until now.
deleteRequest.EndDate = DateTime.Now;
} // Otherwise, delete all partitions that are older than the current partition.
// Hint: The partitions in the collection are returned in sorted order where the
// partition with the oldest end date is at index 0.
else
{
for (int n = partitions.Count - ; n >= ; --n)
{
if (partitions[n].EndDate<DateTime.Now && partitions[n].EndDate>deleteRequest.EndDate)
{
deleteRequest.EndDate=(DateTime)partitions[n].EndDate;
break;
}
}
} // Delete the audit records.
if (deleteRequest.EndDate != new DateTime(, , ))
{
svc.Execute(deleteRequest);
Console.WriteLine("Audit records have been deleted.");
}
else
Console.WriteLine("There were no audit records that could be deleted.");
这个API在某些时候可能有用,比如想指定具体的时间点,而不是一个季度一个季度地去删除。
DeleteRecordChangeHistoryRequest是V9以后才有的API,也就是说在使用这个API之前,你得先把你的XRM Dll升级到对应的版本,以及把.Net Framework版本更新到4.6.2,要不你会发现这个对象在使用的时候不存在。这个API的作用,是删除某条具体Entity Record的所有Audit记录。用法是指定Target属性即可,这个是EntityReference对象。
由于Dynamics 365不支持直接删除Audit记录的操作,就是你如果想先获取Audit记录,然后调用Delete方法去删除某条具体的Audit Record,这个是行不通的。所以综上来看,我们只有Audit Log Management以及两个API可用。那么再回到上面的问题:如何删除某个Entity的Audit,以及如何删除某个Entity,某个时间段之前的Audit?目前来看,只好利用DeleteRecordChangeHistoryRequest来迂回实现了。
Dynamics 365 Online-Delete Audit History Data的更多相关文章
- Dynamics 365-如何利用Audit History还原被删除的数据
Audit History,常被用来记录record的日常操作信息,包括创建,更新,删除.这是一个非常实用的功能,想想看,如果数据被误修改了,通过Audit History,可以很容易地找到修改前的数 ...
- Use SQL to Query Data from CDS and Dynamics 365 CE
from : https://powerobjects.com/2020/05/20/use-sql-to-query-data-from-cds-and-dynamics-365-ce/ Have ...
- Dynamics 365 for Team Members Description
Dynamics 365 for Team Members, Business edition The Dynamics 365 for Team Members, Business edition ...
- Dynamics 365中的批量删除作业执行频率可以高于每天一次吗?
微软动态CRM专家罗勇 ,回复317或者20190314可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 我先来做一个例子,登 ...
- Dynamics 365 CE中AsyncOperationBase表记录太多,影响系统性能怎么办?
微软动态CRM专家罗勇 ,回复311或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要是根据微软官 ...
- 安装完成Dynamics 365 CE后别忘了更改维护作业的运行时间
摘要: 微软动态CRM专家罗勇 ,回复309或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 安装完毕Dy ...
- Dynamics 365 Online-Microsoft Flow
自December 2016 update for Dynamics 365 (online)之后的Online版本,Dynamics 365有了个新Feature:Microsoft Flow Co ...
- 可以设置实体在Dynamics 365高级查找中不显示吗?
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Introduction to Microsoft Dynamics 365 licensing
Microsoft Dynamics 365 will be released on November 1. In preparation for that, Scott Guthrie hosted ...
随机推荐
- Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot)
问题 Android 设置页面的启动模式为 singletask 之后,当按Home 退出时,再重新打开应用,还会进入首启动页.就会造成一些应用需要重新登录,当前页数据丢失等问题 解决 去除启动页的 ...
- MySQL Event历史记录
需求 SQL Server的作业历史(Job)记录是保存在msdb库中的,很方便就查询相关的Job定义,计划和历史记录,而MySQL的event却没有历史记录.为方便查看event是否正常执行以及执行 ...
- npm 镜像配置
npm 默认 registry:https://registry.npmjs.org/ npm中文文档:https://www.npmjs.cn 淘宝 NPM 镜像:https://npm.ta ...
- 简单“三步”让你的网站支持https!
关于Let's Encrypt Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起 ...
- SpringBoot系列随笔 - BootJar的启动方式
前言 写完maven的加密插件后,尝试在boot启动时的类加载过程中编写解密代码时,发现了一个平常没有注意的地方. 那就是boot-jar的启动方式与我们平常编写的可执行jar是存在很大差别的. 所以 ...
- MVVM解析
闲来无事看到了一个关于Vue的MVVM的简单讲解,觉得写得不错,做个分享. 文章地址 https://github.com/DMQ/mvvm 文章内容我就不贴出,比较简洁明了,我记录一下我的一些思考总 ...
- How to use special characters in XML?
https://dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html Because X ...
- Vue-cli脚手架 安装 并创建项目--命令
检查是否有 node - v 安装Vue-cli npm install -g vue-cli 安装好后,执行 vue list可以看到很多实用的模板,我这里实用的webpack 初始化模板 vue ...
- MongoDB用户验证和权限管理
官方参考页面: https://docs.mongodb.com/v3.6/tutorial/enable-authentication/ https://docs.mongodb.com/v3.6/ ...
- 关于useGeneratedKeys的使用
今天认识到一个新参数 useGeneratedKeys 再这里我记录分享一下 在我们进行两表关联的时候,添加表1Specification 表2Specification_option 表一: 表二 ...