Удалить журнал аудита Dynamics CRM между двумя датами - PullRequest
0 голосов
/ 27 марта 2020

Я хочу спросить, есть ли идея удалить журнал аудита в Dynamics CRM Online между двумя датами

1 Ответ

0 голосов
/ 28 марта 2020

Документация говорит:

Удалить историю изменений для диапазона дат

Вы можете удалить записи аудита для диапазона дат используя запрос DeleteAuditDataRequest. Записи данных аудита удаляются последовательно от самых старых до самых новых. Функциональность этого запроса немного отличается в зависимости от версии сервера Microsoft SQL, используемой вашим сервером службы общих данных. Common Data Service использует корпоративную версию SQL Server.

Если сервер общей службы данных использует SQL Standard Edition сервера, который не поддерживает функцию разбиения базы данных, запрос DeleteAuditDataRequest удаляет все записи аудита, созданные до даты окончания, указанной в свойстве EndDate. Если ваш сервер Common Data Service использует Enterprise Edition SQL Server, который поддерживает разбиение, запрос DeleteAuditDataRequest удалит все данные аудита в тех разделах, где дата окончания предшествует дате, указанной в свойстве EndDate. Любые пустые разделы также удаляются. Однако ни текущий (активный) раздел, ни записи аудита в этом активном разделе не могут быть удалены с помощью этого или любого другого запроса.

Новые разделы автоматически создаются платформой Common Data Service на ежеквартальной основе каждый год. Эта функциональность не настраивается и не может быть изменена. Вы можете получить список разделов, используя запрос RetrieveAuditPartitionListRequest. Если дата окончания любого раздела позже текущей даты, вы не можете удалить этот раздел или любые записи аудита в нем.

Мы не можем удалить точно между двумя датами, но вы можете удалить данные аудита по разделам только старше определенной даты окончания.

Пример кода :

// 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(2000, 1, 1);

// 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 - 1; n >= 0; --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(2000, 1, 1))
    {
       svc.Execute(deleteRequest);
        Console.WriteLine("Audit records have been deleted.");
    }
    else
    Console.WriteLine("There were no audit records that could be deleted.");

В веб-интерфейсе API можно использовать действие DeleteAuditData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...