Abrufen des Verlaufs von überwachten Datenänderungen
Wenn die Überwachung aktiviert ist und Daten in überwachten Tabellen und Spalten geändert werden, können Sie den Änderungsverlauf dieser Tabellen und Spalten abrufen.
Überwachungsdaten sind nicht über den Dataverse TDS (SQL)-Endpunkt verfügbar.
Der Prüfungsverlauf ist für Tabellen in der mobilen App nicht verfügbar.
Überwachungstabelle
Überwachungsereignisse werden in der Überwachungs- (Audit)-Tabelle gespeichert. In der Web-API ist audit EntityType die Ressource für diese Daten. Die Überwachungstabelle ist schreibgeschützt.
Die Überwachungstabelle liefert die Daten für die Anzeige der Überwachungszusammenfassung, die im Power Platform Admin Center angezeigt wird.
Stellen Sie sicher, dass der aufrufende Benutzer die prvReadAuditSummary
-Berechtigung hat, um Daten aus der Tabelle abzurufen.
Die folgende Tabelle fasst wichtige Spalten in der Audit-Tabelle zusammen.
Schemaname LogicalName Anzeigename |
Type | Beschreibung |
---|---|---|
Action action Veranstaltung |
Auswahl | Repräsentiert das Ereignis, das die Änderung verursacht hat. Weitere Informationen zu Aktionen. |
AttributeMask attributemask Geändertes Feld |
Memo | Wenn die Änderung eine Änderung an Datensatzdaten darstellt, enthält eine durch Kommas getrennte Liste von Zahlen, die AttributeMetadata.ColumnNumber entsprechen. Hinweis: Verwenden Sie diese Daten nicht. Verwenden Sie stattdessen die Nachrichten, um den Änderungsverlauf abzurufen. |
AuditId auditid Datensatz-ID |
Eindeutiger Bezeichner | Bezeichnet den Primärschlüssel für die Überwachungstabelle. |
CallingUserId callinguserid Aufrufender Benutzer |
Nachschlagefeld | Bezeichnet den aufrufenden Benutzer, wenn der Identitätswechsel für den Vorgang verwendet wird, andernfalls null. |
CreatedOn createdon Änderungsdatum |
DateTime | Bezeichnet, wann der Überwachungsdatensatz erstellt wurde, d. h. wann die Benutzeroperation stattfand. |
ObjectId objectid Datensatz |
Nachschlagefeld | Bezeichnet den Datensatz eindeutig, der überwacht wurde. |
ObjectTypeCode objecttypecode Entität |
EntityName | Zeigt den logischen Namen der Tabelle an, auf die in der Spalte objectid verwiesen wird. |
Operation operation Vorgang |
Auswahl | Bezeichnet den Vorgang, der den Überwachungsdatensatz erstellt hat. Einer von vier Werten: 1 = Erstellen 2 = Aktualisieren 3 = Löschen 4 = Zugriff |
UserId userid Geändert von |
Nachschlagefeld | Zeigt die ID des Benutzers an, der die Datenänderung vorgenommen hat. |
Überwachungsaktionen
Verwenden Sie Aktionsauswahl/Optionen, um nach bestimmten Ereignissen zu filtern. Die folgenden Tabellen kategorisieren die Ereignisse.
Tabellenzeilenereignisse
Diese Ereignisse erfassen Änderungen an einem Datensatz.
Wert | Beschriftung | Nachricht | Beschreibung |
---|---|---|---|
1 | Erzeugen | Create |
Ein Datensatz wird erstellt. |
2 | Aktualisieren | Update |
Ein Datensatz wird aktualisiert. |
3 | Löschen | Delete |
Ein Datensatz wird gelöscht. |
12 | Zusammenführen | Merge |
Ein Datensatz wird mit einem anderen Datensatz zusammengeführt. |
13 | Zuweisen | Assign |
Der ownerid Spaltenwert für einen benutzereigenen Tabellendatensatz wird geändert. |
41 | Zustand festlegen | SetState |
Der statecode Spaltenwert für einen Datensatz wird geändert. |
Ereignisse zum Freigeben von Datensätzen
Diese Ereignisse erfassen Änderungen am Datensatzzugriff, wenn ein Datensatz freigegeben wird.
Wert | Beschriftung | Nachricht | Beschreibung |
---|---|---|---|
14 | Teilen | GrantAccess |
Einem Benutzer werden Berechtigungen für einen Datensatz gewährt. |
48 | Freigabe ändern | ModifyAccess |
Die Berechtigungen, die einem Benutzer gewährt werden, werden geändert. |
49 | Freigabe aufheben | RevokeAccess |
Der Zugriff eines Benutzers auf einen Datensatz wird entfernt. |
m:n-Beziehungsereignisse
Diese Ereignisse erfassen Änderungen für viele-zu-viele-Beziehungen.
Wert | Label | Nachricht | Beschreibung |
---|---|---|---|
33 | Entitäten zuordnen | Associate |
Ein oder mehrere Datensätze sind einem anderen zugeordnet. |
34 | Zuordnung von Entitäten aufheben | Disassociate |
Die Zuordnung eines oder mehrerer Datensätze wird aufgehoben. |
53 | Team Rolle zuweisen | Associate |
Einem Team wird eine Sicherheitsrolle zugewiesen. |
54 | Rolle von Team entfernen | Disassociate |
Einem Team wird eine Sicherheitsrolle aberkannt. |
55 | Benutzer Rolle zuweisen | Associate |
Eine Sicherheitsrolle wird einem Benutzer zugewiesen. |
56 | Rolle von Benutzer entfernen | Disassociate |
Einem Benutzer wird eine Sicherheitsrolle aberkannt. |
Benutzerzugriffsereignisse
Diese Optionen erfassen den Verlauf des Benutzerzugriffs, wenn die Überwachung des Benutzerzugriffs aktiviert ist. Der Überwachungsdatensatz für diese Ereignisse enthält einen operation
-Spaltenwert von 4.
Wert | Label | Beschreibung |
---|---|---|
64 | Benutzerzugriff über das Web | Benutzer greift auf Dataverse mit einer modellgesteuerten App zu. |
65 | Benutzerzugriff über die Webdienste | Benutzer greift auf Dataverse mit Webdiensten mit einem anderen Client als einer modellgesteuerten App zu. |
112 | Überwachung des Benutzerzugriffs gestartet | Überwachung des Benutzerzugriffs begann. |
113 | Überwachung des Benutzerzugriffs beendet | Überwachung von Benutzerzugriffen ended. |
Das Beispiel: Benutzerzugriff überwachen zeigt, wie Sie diese Aktionsoptionen verwenden, um den Benutzerzugriff zu überwachen.
Metadatenänderungsereignisse
Diese Ereignisse erfassen Änderungen an Tabellen- und Spaltendefinitionen sowie Änderungen an der Organisationstabelle.
Wert | Beschriftung | Beschreibung |
---|---|---|
100 | Entität löschen | Benutzer löscht eine Tabelle. |
101 | Attribut löschen | Benutzer löschte eine Spalte. |
102 | Änderung auf Entitätsebene überwachen | Der Benutzer hat eine Tabellendefinition geändert, um die Überwachung zu aktivieren oder zu deaktivieren. |
103 | Änderung auf Attributebene überwachen | Der Benutzer hat eine Spaltendefinition geändert, um die Überwachung zu aktivieren oder zu deaktivieren. |
104 | Änderung auf Organisationsebene überwachen | Vom Benutzer geänderte Organisationseinstellungen. |
Überwachungsänderungsereignisse
Diese Ereignisse erfassen Änderungen an Überwachungseinstellungen.
Wert | Label | Beschreibung |
---|---|---|
105 | Entitätsüberwachung gestartet | Überwachung wurde für eine Tabelle aktiviert. |
106 | Attributüberwachung gestartet | Überwachung wurde für eine Spalte aktiviert. |
107 | Überwachung aktiviert | Überwachung wurde für die Organisation aktiviert. |
108 | Entitätsüberwachung angehalten | Überwachung wurde für eine Tabelle deaktiviert. |
109 | Attributüberwachung angehalten | Überwachung wurde für ein Attribut deaktiviert. |
110 | Überwachung deaktiviert | Überwachung wurde für eine Spalte deaktiviert. |
111 | Löschung des Überwachungsprotokolls | Ein Überwachungsprotokoll wurde gelöscht. |
Ereignisse für Änderungen an Sicherheitsrollen
Diese Ereignisse erfassen Änderungen an Sicherheitsrollen.
Wert | Label | Nachricht | Beschreibung |
---|---|---|---|
57 | Rolle Berechtigungen hinzufügen | AddPrivilegesRole |
Berechtigungen wurden zu einer Rolle hinzugefügt. |
58 | Berechtigungen von Rolle entfernen | RemovePrivilegeRole |
Berechtigungen wurden aus einer Rolle entfernt. |
59 | Berechtigungen in Rolle ersetzen | ReplacePrivilegesRole |
Berechtigungen für eine Rolle wurden ersetzt. |
Andere Aktionen
Die verbleibenden Aktionsoptionen beziehen sich im Allgemeinen auf überprüfbare Vorgänge, die für bestimmte Lösungen gelten, wie z. B. Dynamics 365 Sales, Customer Service und Marketing.
Die Bezeichnungen für diese Aktionen sollten mit einem SdkMessage.Name Wert ausgerichtet sein, der die Aktion darstellt. Die spezifische Operation kann eine Kombination aus dem Aktionsnamen und einer Tabelle sein. Zum Beispiel sollte eine Option mit einem Wert von 10 und die Bezeichnung Schließen den CloseIncident
oder CloseQuote
Mitteilungen entsprechen.
Überwachungstabellenbeziehungen
Die Überwachungstabelle hat nur zwei viele-zu-eins-Beziehungen mit der systemuser
-Tabelle:
Relationship | Überwachungstabellensuche | Beschreibung |
---|---|---|
lk_audit_userid |
userid |
Verbindet den Benutzer mit allen Audit-Datensätzen, die aufgrund der von ihm vorgenommenen Änderungen erstellt wurden. |
lk_audit_callinguserid |
callinguserid |
Verbindet den Benutzer mit einem der Überwachungsdatensätze, die er erstellt hat, während er sich als ein anderer Benutzer ausgibt. |
Sie können diese Beziehungen verwenden, um Audit-Datensätze zu filtern, die für einen bestimmten Benutzer erstellt wurden.
Die Audit-Entität unterstützt nur eine Link-Entität in einer Abfrage. Da nur zwei Beziehungen mit der systemuser
-Tabelle existieren, können Sie Daten entweder aus der Spalte callinguserid
oder der Spalte userid
einbeziehen, aber nicht beide gleichzeitig.
Sie können keine Abfragen mit QueryExpression oder FetchXml erstellen, die Überwachungsdaten mit anderen Tabellen als den beiden formalen Beziehungen verknüpfen, die mit der systemuser
Tabelle existieren.
Überwachung EntityType-Definition
Mit der Web-API verwenden Sie die audit EntityType-Ressource zum Lesen von Daten aus der Überwachungstabelle. Die folgenden Daten sind die audit EntityType-Definition aus dem Web-API-CSDL $metadata service-Dokument ohne Anmerkungen.
<EntityType Name="audit" BaseType="mscrm.crmbaseentity">
<Key>
<PropertyRef Name="auditid" />
</Key>
<Property Name="operation" Type="Edm.Int32" />
<Property Name="attributemask" Type="Edm.String" Unicode="false" />
<Property Name="action" Type="Edm.Int32" />
<Property Name="useradditionalinfo" Type="Edm.String" Unicode="false" />
<Property Name="createdon" Type="Edm.DateTimeOffset" />
<Property Name="objecttypecode" Type="Edm.String" Unicode="false" />
<Property Name="_callinguserid_value" Type="Edm.Guid" />
<Property Name="_regardingobjectid_value" Type="Edm.Guid" />
<Property Name="_objectid_value" Type="Edm.Guid" />
<Property Name="_userid_value" Type="Edm.Guid" />
<Property Name="transactionid" Type="Edm.Guid" />
<Property Name="auditid" Type="Edm.Guid" />
<NavigationProperty Name="callinguserid" Type="mscrm.systemuser"
Nullable="false" Partner="lk_audit_callinguserid">
<ReferentialConstraint Property="_callinguserid_value"
ReferencedProperty="systemuserid" />
</NavigationProperty>
<NavigationProperty Name="userid" Type="mscrm.systemuser"
Nullable="false" Partner="lk_audit_userid">
<ReferentialConstraint Property="_userid_value"
ReferencedProperty="systemuserid" />
</NavigationProperty>
</EntityType>
Anmerkung
Die ChangeData-Spalte ist nicht in der Web-API audit EntityType enthalten. Verwenden Sie diese Daten nicht. Verwenden Sie stattdessen die Nachrichten, um den Überwachungsänderungsverlauf abzurufen.
Beispiel: Von einem Benutzer gelöschte Kontaktdatensätze suchen
Die folgenden Beispiele sind Abfragen, die den Überwachungsverlauf für Kontaktdatensätze zeigen, die von einem bestimmten Benutzer gelöscht wurden.
Die beiden folgenden Abfragen geben dieselbe Antwort zurück.
Die folgende Abfrage filtert auf die _userid_value
-Eigenschaft des Überwachungsdatensatzes, wo der Wert mit <user id>
übereinstimmt.
Anforderung:
GET [Organization URI]/api/data/v9.2/audits?$select=_objectid_value,objecttypecode,createdon,_userid_value&$orderby=createdon desc&$filter=operation eq 3 and objecttypecode eq 'contact' and _userid_value eq '<user id>'
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Prefer: odata.include-annotations="*"
Die folgende Abfrage greift auf die Sammlung von Überwachungsdatensätzen für einen bestimmten Benutzer mit der sammlungsbewerteten Navigationseigenschaft lk_audit_userid
aus der systemuser
-Tabelle zu, wo der systemuserid
-Wert mit <user id>
übereinstimmt.
Anforderung:
GET [Organization URI]/api/data/v9.2/systemusers(<user id>)/lk_audit_userid?$select=_objectid_value,objecttypecode,createdon,_userid_value&$orderby=createdon desc&$filter=operation eq 3 and objecttypecode eq 'contact'
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Prefer: odata.include-annotations="*"
Antwort:
HTTP/1.1 200 OK
Preference-Applied: odata.include-annotations="*"
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#audits(_objectid_value,objecttypecode,createdon,_userid_value)",
"@Microsoft.Dynamics.CRM.totalrecordcount": -1,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": false,
"value": [
{
"_objectid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "contact",
"_objectid_value": "0e76dc8a-41b5-ec11-983f-0022482bf046",
"objecttypecode@OData.Community.Display.V1.FormattedValue": "Contact",
"objecttypecode": "contact",
"createdon@OData.Community.Display.V1.FormattedValue": "5/12/2022 3:19 PM",
"createdon": "2022-05-12T22:19:12Z",
"_userid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "systemuser",
"_userid_value@OData.Community.Display.V1.FormattedValue": "FirstName LastName",
"_userid_value": "4026be43-6b69-e111-8f65-78e7d1620f5e"
},
< Other results truncated for brevity>
]
}
Abrufen des Überwachungsänderungsverlaufs
Sie können jede der drei Nachrichten verwenden, um überwachte Datenänderungen abzurufen.
Internet-API | SDK für .NET | Beschreibung |
---|---|---|
RetrieveAuditDetails-Funktion | RetrieveAuditDetailsRequest-Klasse | Rufen Sie die vollständigen Überwachungsdetails aus einem Überwachungsdatensatz ab. |
RetrieveAttributeChangeHistory-Funktion | RetrieveAttributeChangeHistoryRequest-Klasse | Rufen Sie den Änderungsverlauf für eine einzelne Spalte eines überwachten Datensatzes ab. |
RetrieveRecordChangeHistory-Funktion | RetrieveRecordChangeHistoryRequest-Klasse | Rufen Sie alle geprüften Datenänderungen für einen bestimmten Datensatz ab. |
Stellen Sie sicher, dass Sie die Rechte prvReadRecordAuditHistory
und prvReadAuditSummary
haben, um diese Nachrichten verwenden zu können.
AuditDetail-Typen
Diese Nachrichten bieten mehr Details, die vom Typ der Aktion abhängen. Die Details werden durch verschiedene Typen implementiert, die von einem Basis-AuditDetail
-Typ abgeleitet werden, wie in der folgenden Tabelle gezeigt.
Internet-API | SDK für .NET | Beschreibung |
---|---|---|
AuditDetail ComplexType | AuditDetail-Klasse | Zeigt den Basistyp für die abgeleiteten Klassen an. Stellt Zugriff für den Überwachungsdatensatz zur Verfügung. |
AttributeAuditDetail ComplexType | AttributeAuditDetail-Klasse | Stellt Details bereit, wenn Datenänderungen für einen Datensatz auftreten. Bietet Zugriff auf alte Werte und neue Werte. Wird von den folgenden Arten von Aktionen zurückgegeben: - Tabellenzeilenereignisse - Metadatenänderungsereignisse - Überwachungsänderungsereignisse |
RelationshipAuditDetail ComplexType | RelationshipAuditDetail-Klasse | Stellt Details bereit, wenn Datensätze mithilfe einer m:n-Beziehung verknüpft oder getrennt werden. Stellt den Namen der Beziehung und eine Liste der Datensätze bereit, die der Vorgang geändert hat. Zurückgegeben von m:n-Beziehungsereignissen. |
RolePrivilegeAuditDetail ComplexType | RolePrivilegeAuditDetail-Klasse | Liefert Details, wenn die Definitionen von Sicherheitsrolle (Rolle) Datensätzen sich ändern. Stellt Informationen zu den alten und neuen Rollenberechtigungen bereit, die der Rolle zugeordnet sind. Zurückgegeben von Sicherheitsrollenänderungsereignissen. |
ShareAuditDetail ComplexType | ShareAuditDetail-Klasse | Stellt Details bereit, wenn ein Datensatz geteilt oder nicht geteilt wird oder wenn sich die Zugriffsebene auf einen geteilten Datensatz ändert. Zurückgegeben von Ereignisse zum Teilen von Datensätzen. |
UserAccessAuditDetail ComplexType | UserAccessAuditDetail-Klasse | Stellt Details bereit, um die Überwachung des Benutzerzugriffs zu verfolgen. Liefert Details zum Intervall und zur Zugriffszeit. Zurückgegeben von Benutzerzugriffsereignissen. |
Wichtig
Die zuvor aufgeführten Web-API-Typen, die von AuditDetail ComplexType erben, geben nicht den
AuditRecord
-Navigationseigenschaftswert zurück, den sie vonAuditDetail
erben sollten. Das SDK für .NET-Klassen gibt diese Daten zurück.Große Spaltenwerte in den Eigenschaften
AttributeAuditDetail
OldValue
oderNewValue
wie Email.Description oder Annotation sind auf 5 KB oder ungefähr 5.000 Zeichen begrenzt. Ein begrenzter Spaltenwert ist an einem Auslassungszeichen (…) am Ende des Textes zu erkennen; zum Beispiel „lorem ipsum, lorem ip…“ Da die Daten abgeschnitten sind, können Sie sie nicht zum Wiederherstellen von Änderungen an diesen Spaltenwerten verwenden.
RetrieveAuditDetails-Nachricht
Verwenden Sie diese Nachricht, um die Audit-Details für einen einzelnen Audit-Datensatz abzurufen.
RetrieveAuditDetails ist eine Funktion, die an die Überwachungstabelle gebunden ist. Beziehen Sie den Prefer: odata.include-annotations="*"
-Anforderungsheader ein, um formatierte Werte zu erhalten.
Das folgende Beispiel zeigt den AttributeAuditDetail ComplexType, der zurückgegeben wird, wenn parentaccountid
für einen account
-Datensatz festgelegt ist.
Anforderung:
GET [Organization URI]/api/data/v9.2/audits(12869c65-d7d3-ec11-b656-281878f0eba9)/Microsoft.Dynamics.CRM.RetrieveAuditDetails
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Prefer: odata.include-annotations="*"
Antwort:
HTTP/1.1 200 OK
OData-Version: 4.0
Preference-Applied: odata.include-annotations="*"
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveAuditDetailsResponse",
"AuditDetail": {
"@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
"InvalidNewValueAttributes": [],
"LocLabelLanguageCode": 0,
"DeletedAttributes": {
"Count": 0,
"Keys": [],
"Values": []
},
"OldValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account"
},
"NewValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"_parentaccountid_value@OData.Community.Display.V1.FormattedValue": "A. Datum Corporation",
"_parentaccountid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentaccountid",
"_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
"_parentaccountid_value": "d249d106-38b5-ec11-983f-002248296cd0"
}
}
}
Weitere Informationen zu:
RetrieveAttributeChangeHistory-Nachricht
Verwenden Sie diese Nachricht, um eine Liste der Änderungen für eine bestimmte Tabellenspalte abzurufen.
Verwenden Sie den PagingInfo
Parameter, um die Anzahl der zurückzugebenden Datensätze zu steuern und sich vorwärts oder rückwärts durch die Seiten zu bewegen. Legen Sie für nachfolgende Anfragen die PagingInfo.PagingCookie
-Eigenschaft auf den von der AuditDetailCollection.PagingCookie
zurückgegebenen Wert.
Änderungen für diese Nachricht sind immer AttributeAuditDetail
-Typen.
Dieses Beispiel gibt einen einzelnen geprüften Änderungsverlauf für die description
Spalte eines account
Tabellendatensatzes zurück.
Anforderung:
GET [Organization URI]/api/data/v9.2/RetrieveAttributeChangeHistory(Target=@target,AttributeLogicalName=@attributeLogicalName,PagingInfo=@paginginfo)?
@target={ '@odata.id':'accounts(611e7713-68d7-4622-b552-85060af450bc)'}
&@attributeLogicalName='description'
&@paginginfo={
"PageNumber": 1,
"Count": 1,
"ReturnTotalRecordCount": true
}
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Antwort:
HTTP/1.1 200 OK
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveAttributeChangeHistoryResponse",
"AuditDetailCollection": {
"MoreRecords": true,
"PagingCookie": "<cookie page=\"1\"><cookieExtensions ContinuationToken=\"{"pageNumber":2,"continuationToken":"[{\\"compositeToken\\":{\\"token\\":null,\\"range\\":{\\"min\\":\\"3A800000000000000000000000000000\\",\\"max\\":\\"3B000000000000000000000000000000\\"}},\\"orderByItems\\":[{\\"item\\":\\"2022-05-13T22:06:46.6175613Z\\"}],\\"rid\\":\\"CVoNAJIidnNsmz0AAADwAw==\\",\\"skipCount\\":0,\\"filter\\":null}]"}\" /></cookie>",
,
"TotalRecordCount": 3,
"AuditDetails": [
{
"@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
"InvalidNewValueAttributes": [],
"LocLabelLanguageCode": 0,
"DeletedAttributes": {
"Count": 0,
"Keys": [],
"Values": []
},
"OldValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"description": "Old description value"
},
"NewValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"description": "New description value"
}
}
]
}
}
Weitere Informationen zu:
RetrieveRecordChangeHistory-Nachricht
Die RetrieveRecordChangeHistory
-Nachricht zeigt den Verlauf der Datenänderungen für den Datensatz an, der durch den Target
-Parameter angegeben wird.
Verwenden Sie den PagingInfo
Parameter, um die Anzahl der zurückzugebenden Datensätze zu steuern und sich vorwärts oder rückwärts durch die Seiten zu bewegen. Legen Sie für nachfolgende Anfragen die PagingInfo.PagingCookie
-Eigenschaft auf den von der AuditDetailCollection.PagingCookie
zurückgegebenen Wert.
Die Ergebnisse dieser Nachricht werden allgemein als die AttributeAuditDetail
Daten angesehen, die in modellgesteuerten Apps angezeigt werden, wenn Sie Verwandt>Überwachungsverlauf auswählen. Es zeigt die alten Werte und die neuen Werte der Datensätze an, gibt aber auch RelationshipAuditDetail
- und ShareAuditDetail
-Typen zurück.
Diese Meldung kann auch mit den systemuser
- und role
-Tabellen verwendet werden, um RolePrivilegeAuditDetail
- und UserAccessAuditDetail
-Typen zurückzugeben.
Das folgende Beispiel gibt nur die ersten zwei von vier Änderungen an einem Firmendatensatz zurück.
Anforderung:
GET [Organization URI]/api/data/v9.2/RetrieveRecordChangeHistory(Target=@target,PagingInfo=@paginginfo)?
@target={ '@odata.id':'accounts(611e7713-68d7-4622-b552-85060af450bc)'}
&@paginginfo={
"PageNumber": 1,
"Count": 2,
"ReturnTotalRecordCount": true
}
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Antwort:
HTTP/1.1 200 OK
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.RetrieveRecordChangeHistoryResponse",
"AuditDetailCollection": {
"MoreRecords": true,
"PagingCookie": "<cookie page=\"1\"><cookieExtensions ContinuationToken=\"{"pageNumber":2,"continuationToken":"[{\\"compositeToken\\":{\\"token\\":null,\\"range\\":{\\"min\\":\\"38000000000000000000000000000000\\",\\"max\\":\\"38800000000000000000000000000000\\"}},\\"orderByItems\\":[{\\"item\\":\\"2022-05-13T22:06:27.8029732Z\\"}],\\"rid\\":\\"CVoNAJIidnPOnT0AAAAICA==\\",\\"skipCount\\":0,\\"filter\\":null}]"}\" /></cookie>",
"TotalRecordCount": 4,
"AuditDetails": [
{
"@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
"InvalidNewValueAttributes": [],
"LocLabelLanguageCode": 0,
"DeletedAttributes": {
"Count": 0,
"Keys": [],
"Values": []
},
"OldValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"description": "Old description value"
},
"NewValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"description": "New description value"
}
},
{
"@odata.type": "#Microsoft.Dynamics.CRM.AttributeAuditDetail",
"InvalidNewValueAttributes": [],
"LocLabelLanguageCode": 0,
"DeletedAttributes": {
"Count": 0,
"Keys": [],
"Values": []
},
"OldValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"_ownerid_value@OData.Community.Display.V1.FormattedValue": "FirstName LastName",
"_ownerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "ownerid",
"_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "systemuser",
"_ownerid_value": "4026be43-6b69-e111-8f65-78e7d1620f5e"
},
"NewValue": {
"@odata.type": "#Microsoft.Dynamics.CRM.account",
"_ownerid_value@OData.Community.Display.V1.FormattedValue": "TeamName",
"_ownerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "ownerid",
"_ownerid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "team",
"_ownerid_value": "39e0dbe4-131b-e111-ba7e-78e7d1620f5e"
}
}
]
}
}
Anmerkung
Die zurückgegebenen AuditDetail ComplexType-Werte enthalten nicht die AuditRecord
-Eigenschaft, sodass keine Daten darüber verfügbar sind, wer die Änderung vorgenommen hat und wann sie vorgenommen wurde.
Weitere Informationen zu:
Siehe auch
Überwachungsübersicht
Überwachung konfigurieren
Überwachungsdaten löschen
Dataverse Überwachungen verwalten
Beispiel: Änderungen von Tabellendaten überwachen
Beispiel: Überwachung von Benutzerzugriffen