Partager via


Restaurer des enregistrements supprimés avec un code (version préliminaire)

[Cet article fait partie de la documentation en version préliminaire et peut faire l’objet de modifications.]

Parfois, les utilisateurs suppriment des enregistrements qu’ils ne devraient pas. Les administrateurs peuvent activer une corbeille pour les tables afin de pouvoir restaurer des enregistrements supprimés sur une période de temps spécifiée. Découvrez comment les administrateurs peuvent restaurer des enregistrements supprimés

Lorsque la corbeille est activée, les développeurs peuvent utiliser le message Restore pour restaurer un enregistrement supprimé avant la période de temps spécifiée. La période de temps peut aller jusqu’à 30 jours.

Récupérer des enregistrements supprimés qui peuvent être restaurés

Pour récupérer des enregistrements supprimés qui peuvent être restaurés, définissez la source de données de la requête sur « bin ». Les exemples suivants renvoient jusqu’à trois enregistrements de compte supprimés.

Lorsque vous utilisez le SDK, vous pouvez récupérer des données à l’aide de FetchXml ou de QueryExpression.

Lorsque vous récupérez des données à l’aide de FetchXml, définissez l’attribut datasource de l’élément fetch sur « bin » lorsque vous récupérez des enregistrements.

static EntityCollection GetDeletedAccountRecordsFetchXml(IOrganizationService service) {

   string queryString = @"<fetch top='3' datasource='bin'>
                     <entity name='account'>
                        <attribute name='name' />
                     </entity>
                     </fetch>";
   
   FetchExpression query = new(queryString);

   return service.RetrieveMultiple(query);
}

Lorsque vous récupérez des données à l’aide de QueryExpression, définissez la propriété QueryExpression.DataSource sur « bin » lorsque vous récupérez des enregistrements.

static EntityCollection GetDeletedAccountRecordsQueryExpression(IOrganizationService service) {

   QueryExpression query = new("account") { 
         ColumnSet = new ColumnSet("name"),
         DataSource = "bin",
         TopCount = 3
   };

   return service.RetrieveMultiple(query);
}

Restaurer un enregistrement supprimé

Utilisez le message Restore pour restaurer un enregistrement supprimé. Le paramètre Target n’est pas une référence à un enregistrement supprimé, il s’agit d’un enregistrement complet qui vous permet de définir les valeurs des colonnes pendant que vous restaurez l’enregistrement. Toutes les valeurs des colonnes d’origine sont restaurées à moins que vous les remplaciez en définissant des valeurs lors de l’opération Restore.

Notes

Pour le moment, vous ne pouvez restaurer des enregistrements qu’à l’aide de la valeur de la clé primaire. Vous ne pouvez pas utiliser un clé secondaire pour restaurer un enregistrement.

La manière dont vous restaurez un enregistrement supprimé varie selon que vous utilisez le SDK pour .NET ou l’API web.

La manière dont vous restaurez un enregistrement à l’aide du SDK pour .NET varie selon que vous générez des types à liaison anticipée avec pac modelbuilder, ou que vous utilisez le style à liaison tardive.

En savoir plus sur la programmation à liaison tardive et liaison anticipée à l’aide du SDK pour .NET

Exemple de liaison anticipée

La méthode RestoreAccountRecordEarlyBound statique utilise les classes RestoreRequest<T> et Account générées avec pac modelbuilder.

/// <summary>
/// Restores an account record
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance</param>
/// <param name="accountId">The ID of the deleted account record.</param>
/// <param name="originalName">The original name value for the account record.</param>
/// <returns>The ID of the restored account</returns>
static Guid RestoreAccountRecordEarlyBound(
    IOrganizationService service, 
    Guid accountId,
    string originalName)
{
    Account accountToRestore = new()
    {
        Id = accountId,
        // Appending '(Restored)' to the original name
        // to demonstrate overwriting a value.
        Name = originalName + " (Restored)"
    };

    RestoreRequest<Account> request = new()
    {
        Target = accountToRestore
    };

    var response = (RestoreResponse)service.Execute(request);
    return response.id;
}

Exemple de liaison tardive

La méthode RestoreAccountRecordLateBound statique utilise la classe OrganizationRequest pour invoquer le message Restore, définissant le paramètre Target.

/// <summary>
/// Restores an account record
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance</param>
/// <param name="accountId">The ID of the deleted account record.</param>
/// <param name="originalName">The original name value for the account record.</param>
/// <returns>The ID of the restored account</returns>
static Guid RestoreAccountRecordLateBound(
   IOrganizationService service,
   Guid accountId,
   string originalName)
{
   Entity accountToRestore = new("account", accountId)
   {
         Attributes = {
            // Appending '(Restored)' to the original name
            // to demonstrate overwriting a value.
            {"name", originalName + " (Restored)"}
         }
   };

   OrganizationRequest request = new("Restore")
   {
         Parameters = {
            { "Target", accountToRestore }
         }
   };

   OrganizationResponse response = service.Execute(request);

   return (Guid)response.Results["id"];
}

Utilisez les messages avec le SDK pour .NET

Pratiques recommandées lors de la restauration d’enregistrements

Voici les problèmes que vous pouvez éviter lors de la restauration d’enregistrements :

Si certains enregistrements associés dont la référence a été supprimée dans le cadre d’une relation en cascade n’existent plus, l’opération de restauration échoue. Pour éviter ce problème, restaurez toujours les enregistrements associés qui ne sont pas supprimés dans le cadre de l’enregistrement actuel avant d’essayer de restaurer l’enregistrement principal.

Nom: RefCannotBeRestoredRecycleBinNotFound
Code : 0x80049959
Nombre : -2147182247
Message : Entity with id '<Guid Value>' and logical name '<Entity.LogicalName>' does not exist. We cannot restore the reference '<Referred Primary Key Name>' that must be restored as part of this Restore call. ValueToBeRestored: <Guid Value>, ReferencedEntityName: <Referenced Entity Name>, AttributeName: <Referred Attribute Name>

Éviter de spécifier les valeurs de la clé primaire lors de la création d’enregistrements

Il est généralement recommandé de toujours laisser Dataverse définir la clé primaire lors de la création d’un enregistrement. Si vous créez un nouvel enregistrement comportant la même valeur de clé primaire qu’un enregistrement supprimé, l’enregistrement supprimé ne peut pas être restauré. Si vous le faites, vous devez supprimer le nouvel enregistrement avant de pouvoir restaurer l’enregistrement supprimé.

Nom: DuplicateExceptionRestoreRecycleBin
Code : 0x80044a02
Nombre : -2147182279
Message : Please delete the existing conflicting record '<Entity Platform Name>' with primary key '<Primary Key Name>' and primary key value '<Primary Key Value>' before attempting restore.

Les enregistrements avec des valeurs de clé secondaire correspondantes bloquent la restauration

Si vous créez un enregistrement comportant les mêmes valeurs de colonne de clé secondaire qu’un enregistrement supprimé, vous ne pouvez pas le restaurer. Si vous le faites, vous devez supprimer le nouvel enregistrement avant de pouvoir restaurer l’enregistrement supprimé.

Nom: DuplicateExceptionEntityKeyRestoreRecycleBin
Code : 0x80049929
Nombre : -2147182295
Message : Duplicate entity key preventing restore of record '<Entity Platform Name>' with primary key '<Primary Key Name>' and primary key value '<Primary Key Value>'. See inner exception for entity key details.

Les enregistrements qui utilisent des options de choix supprimées ne sont pas restaurés

Si vous supprimez une option du groupe d’options et que cette option a été utilisée dans un enregistrement supprimé, vous ne pouvez pas la restaurer car l’option n’est plus valide. Avant de supprimer une option du groupe d’options, vérifiez qu’aucun enregistrement n’utilise cette option, y compris les enregistrements supprimés.

Nom: PicklistValueOutOfRangeRecycleBin
Code : 0x80049949
Nombre : -2147182263
Message : Picklist value not valid, please add the invalid value back to the picklist before restoring record

Violation de la clé primaire lors de la suppression

Si l’enregistrement avec la même clé primaire a déjà été supprimé auparavant, la copie dans la corbeille est ignorée pour l’enregistrement. Pour que tous les éléments supprimés soient stockés dans la corbeille, vous pouvez définir le paramètre DoNotEnforcePrimaryKeyOrgSettingRecycleBin à l’aide de l’outil OrgDBOrgSettings pour Microsoft Dynamics CRM.

Après avoir activé ce paramètre, vous pourriez recevoir l’erreur suivante :

Nom: DuplicateExceptionRestoreRecycleBin
Code : 0x80049939
Nombre : -2147182279
Message : A record that has the attribute values Deleted Object already exists on Delete.

Détecter les tables activées pour la corbeille

Avant que la fonction de corbeille ne soit activée, la table de configuration de la corbeille (RecycleBinConfig) ne comporte pas de lignes.

Avec le temps, nous espérons qu’à terme, la plupart des tables pourront utiliser la fonction de corbeille. Les composants de solution, les tables virtuelles et les tables élastiques ne sont pas pris en charge pour la corbeille. Pendant ce version préliminaire, certaines tables actuellement non activées pourraient être activées ultérieurement (par exemple, les tables avec plus de 400 colonnes). Pour obtenir une liste des tables qui ne prennent pas en charge la corbeille, consultez Tables non prises en charge actuellement pour la corbeille.

Vous pouvez également désactiver la corbeille pour des tables spécifiques et désactiver la corbeille pour l’environnement. Si la corbeille n’est pas activée pour une table, vous ne trouverez aucun enregistrement éligible à la restauration. Vous pouvez interroger Dataverse pour savoir si la corbeille est activée pour une table ou non.

Les tables activées pour la corbeille comportent une ligne dans la table RecycleBinConfigstatecode est actif et isreadyforrecyclebin a la valeur true. La table RecycleBinConfig ne contient pas le nom de la table, mais fait référence à une ligne de la table des entités où la colonne logicalname contient le LogicalName de la table.

Utilisez la requête FetchXml suivante pour détecter les tables pour lesquelles la corbeille est activée :

<fetch>
  <entity name='recyclebinconfig'>
    <filter type='and'>
      <condition attribute='statecode'
        operator='eq'
        value='0' />
      <condition attribute='isreadyforrecyclebin'
        operator='eq'
        value='1' />
    </filter>
    <link-entity name='entity'
      from='entityid'
      to='extensionofrecordid'
      link-type='inner'
      alias='entity'>
      <attribute name='logicalname' />
      <order attribute='logicalname' />
    </link-entity>
  </entity>
</fetch>

Découvrez comment interroger les données à l’aide de FetchXml

Détecter les tables pour lesquelles la corbeille n’est pas activée

Pour savoir quelles tables ne sont pas activées pour la corbeille, utilisez la requête FetchXml suivante qui est l’inverse de celle disponible dans Détecter quelles tables sont activées pour la corbeille.

<fetch>
  <entity name='entity'>
    <attribute name='logicalname' />
    <filter type='or'>
      <condition entityname='recyclebin'
        attribute='extensionofrecordid'
        operator='null' />
      <condition entityname='recyclebin'
        attribute='statecode'
        operator='ne'
        value='0' />
      <condition entityname='recyclebin'
        attribute='isreadyforrecyclebin'
        operator='ne'
        value='1' />
    </filter>
    <order attribute='logicalname' />
    <link-entity name='recyclebinconfig'
      from='extensionofrecordid'
      to='entityid'
      link-type='outer'
      alias='recyclebin' />
  </entity>
</fetch>

Découvrez comment interroger les données à l’aide de FetchXml

Les résultats de cette requête à compter de mai 2024 lorsque cette fonctionnalité préliminaire a commencé sont disponibles dans Tables non prises en charge actuellement pour la corbeille

Récupérer et définir la configuration de la période de nettoyage automatique pour la corbeille

La valeur permettant de déterminer la durée pendant laquelle des enregistrements supprimés peuvent être restaurés est définie dans la colonne RecycleBinConfig.CleanupIntervalInDays où la valeur de la colonne Name est organization. Une ligne sur deux dans la table RecycleBinConfig a une valeur de colonne CleanupIntervalInDays de -1. Cette valeur indique qu’elle utilise les mêmes valeurs que celles définies pour la table organization.

Pour spécifier une valeur différente pour une autre table, définissez la valeur de la colonne CleanupIntervalInDaysName correspond au nom logique de la table. Cette colonne autorise des valeurs pouvant aller jusqu’à 30 ; nous vous recommandons de ne pas la définir à moins qu’elle soit différente de la valeur par défaut de l’organisation.

Vous pouvez utiliser cette méthode SetCleanupIntervalInDays statique pour définir la valeur de la colonne CleanupIntervalInDays pour une table spécifique.

/// <summary>
/// Updates the CleanupIntervalInDays value for a specified table
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance</param>
/// <param name="entityId">The entityId of the table</param>
/// <param name="cleanupIntervalInDays">The new CleanupIntervalInDays value</param>
static void SetCleanupIntervalInDays(
    IOrganizationService service,
    Guid entityId,
    int cleanupIntervalInDays)
{

    QueryExpression query = new("recyclebinconfig")
    {
        ColumnSet = new ColumnSet("recyclebinconfigid"),
        Criteria = new FilterExpression(LogicalOperator.And)
        {
            Conditions = {
              {
                  new ConditionExpression(
                      attributeName: "extensionofrecordid",
                      conditionOperator: ConditionOperator.Equal,
                      value: entityId)
              }
          }
        }
    };

    EntityCollection records = service.RetrieveMultiple(query);

    if (records.Entities.Count.Equals(1))
    {
        Guid id = records.Entities[0].Id;

        Entity record = new(entityName: "recyclebinconfig", id: id)
        {
            Attributes = {
                { "cleanupintervalindays", cleanupIntervalInDays }
            }
        };

        service.Update(record);

    }
    else
    {
        throw new Exception($"Recycle bin configuration for table '{tableLogicalName}' not found.");
    }
}

Utiliser le SDK pour .NET

Désactiver la corbeille pour une table

Pour désactiver la corbeille pour une table, désactivez l’enregistrement recyclebinconfig pour la table en définissant les propriétés statecode et statuscode sur leurs valeurs Inactives : 2 et 1, respectivement.

Notes

Les requêtes suivantes comparent la valeur EntityId à la valeur de la colonne Entity.EntityId, qui stocke la table EntityMetadata.MetadataId.

Utilisez cette méthode DisableRecycleBinForTable statique pour désactiver la corbeille pour une table spécifique.

/// <summary>
/// Disable the Recycle bin for a specified table
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance</param>
/// <param name="tableEntityId">The entityId of the table</param>
static void DisableRecycleBinForTable(
    IOrganizationService service,
    Guid tableEntityId)
{

    QueryExpression query = new("recyclebinconfig")
    {
        ColumnSet = new ColumnSet("recyclebinconfigid")
    };

    LinkEntity entityLink = query.AddLink(
      "entity", 
      "extensionofrecordid", 
      "entityid");

    entityLink.LinkCriteria.AddCondition(
      "extensionofrecordid", 
      ConditionOperator.Equal, 
      tableEntityId);

    EntityCollection recyclebinconfigs = service.RetrieveMultiple(query);

    if (recyclebinconfigs.Entities.Count.Equals(1))
    {

        var id = recyclebinconfigs.Entities[0].GetAttributeValue<Guid>("recyclebinconfigid");

        Entity recyclebinconfig = new("recyclebinconfig", id)
        {
            Attributes = {
                { "statecode", new OptionSetValue(1) },
                { "statuscode", new OptionSetValue(2) }
            }
        };

        service.Update(recyclebinconfig);
    }
    else
    {
        string message = $"Recycle bin configuration for table '{extensionofrecordid}' not found.";
        throw new Exception(message);
    }
}

Utiliser le SDK pour .NET

Désactiver la corbeille pour l’environnement

Notes

La meilleure façon de désactiver la corbeille pour un environnement est de la désactiver dans le centre d’administration Power Platform. La méthode décrite ici peut changer avant que la fonctionnalité ne devienne généralement disponible.

Supprimez la ligne dans la table RecycleBinConfig où la valeur name est "organization". Cela déclenche la suppression de tous les enregistrements de la table RecycleBinConfig et désactive la corbeille pour l’environnement.

Important

N’essayez pas de supprimer d’autres enregistrements individuels. Il est important que Dataverse gère cela.

Gérer la restauration des enregistrements supprimés par une logique métier personnalisée

Dataverse fournit un mécanisme pour gérer les actions souhaitées pour les enregistrements associés lorsqu’une ligne est supprimée. Ces données de configuration font partie de la définition de la relation. Lorsqu’un enregistrement associé est supprimé, il existe quatre comportements possibles que vous pouvez configurer :

Comportement de suppression Description
Tout en cascade Les enregistrements associés sont supprimés.
Supprimer le lien Les colonnes de recherche de l’enregistrement supprimé sont définies sur null.
Sans mise en cascade Aucune modification n’est appliquée aux enregistrements associés. (Interne uniquement)
Restreindre Dataverse empêche la suppression de l’enregistrement pour maintenir l’intégrité des données. L’enregistrement ne peut pas être supprimé à moins qu’il n’existe aucun enregistrement associé à cette relation.

En savoir plus sur les comportements de relation

Il n’y a rien à faire lorsque la relation est configurée pour Tout mettre en cascade, Supprimer le lien et Restreindre car Dataverse gère ces comportements.

Si une relation est configurée pour utiliser le comportement Supprimer le lien, mais cette relation doit supprimer l’enregistrement associé, vous pouvez avoir une logique personnalisée qui applique un comportement personnalisé. Par exemple, vous souhaiterez peut-être répondre à ce comportement différemment et implémenter votre propre comportement Mettre en cascade une partie en fonction des règles que vous définissez. Par exemple, vous pouvez supprimer les enregistrements inactifs ou les enregistrements qui n’ont pas été mis à jour sur une certaine période. Cette logique est généralement implémentée à l’aide d’un plug-in, mais elle peut également être appliquée en utilisant Power Automate avec le connecteur Microsoft Dataverse : déclencheur Quand une ligne est ajoutée, modifiée ou supprimée.

Si vous disposez de ce type de logique métier personnalisée, Dataverse ne la connait pas et ne peut pas « annuler » automatiquement votre logique. Cependant, vous pouvez enregistrer un autre plug-in dans le message Restore pour inverser votre logique personnalisée. Ou bien, vous pouvez utiliser Power Automate et le connecteur Microsoft Dataverse : déclencheur Quand une action est effectuée.

Important

Faites attention au contexte lorsque vous enregistrez les étapes du plug-in pour le message Restore. L’enregistrement en cours de restauration ne sera pas disponible à l’étape PreOperation. Si des enregistrements associés doivent être créés, utilisez l’étape PostOperation. En savoir plus sur les étapes du plug-in.

Les valeurs InputParameters et OutputParameters du message Restore sont similaires au message Create ; par conséquent, les plug-ins écrits pour être enregistrés pour le message Create peuvent être réutilisés pour le message Restore avec moins de modifications.

Tables non prises en charge actuellement pour la corbeille

Les tables suivantes sont le résultat de la requête disponible dans Détecter les tables pour lesquelles la corbeille n’est pas activée en mai 2024, lorsque la version préliminaire de cette fonctionnalité a démarré. Les tables privées ne sont pas incluses dans cette liste.

aaduser
aicopilot
aiplugin
aipluginconversationstartermapping
aipluginexternalschemaproperty
aipluginoperation
aipluginoperationresponsetemplate
annualfiscalcalendar
appaction_appactionrule_classicrules
appactionrule
appconfig
application
applicationuser
applicationuserrole
appmodulecomponent
appnotification
asyncoperation
attributeimageconfig
backgroundoperation
bot_botcomponent
bot_environmentvariabledefinition
botcomponent_aipluginoperation
botcomponent_connectionreference
botcomponent_environmentvariabledefinition
botcomponent_workflow
bulkdeletefailure
businessunit
callbackregistration
card
cardstateitem
catalogassignment
columnmapping
componentversion
componentversionnrddatasource
connectionreference
connectionroleassociation
copilotexamplequestion
copilotsynonyms
customapi
customapiresponseproperty
customcontroldefaultconfig
datalakefolder
datalakeworkspace
dataprocessingconfiguration
desktopflowbinary
displaystring
duplicaterulecondition
dvfilesearchattribute
dvtablesearch
dvtablesearchentity
entity
entitydataprovider
entityindex
entityrecordfilter
environmentvariabledefinition
eventexpanderbreadcrumb
expiredprocess
fabricaiskill
fieldpermission
fixedmonthlyfiscalcalendar
flowlog
flowmachinegroup
flowmachineimageversion
flowrun
goal
importentitymapping
importjob
importmap
interactionforemail
kbarticletemplate
lookupmapping
mainfewshot
managedproperty
metadataforarchival
mobileofflineprofileitem
mobileofflineprofileitemfilter
msdyn_aiconfiguration
msdyn_aitemplate
msdyn_componentlayer
msdyn_connectordatasource
msdyn_dataflow_datalakefolder
msdyn_dataflowtemplate
msdyn_dmsrequest
msdyn_entitylinkchatconfiguration
msdyn_insightsstorevirtualentity
msdyn_knowledgemanagementsetting
msdyn_mobileapp
msdyn_nonrelationalds
msdyn_pmanalysishistory
msdyn_pmcalendar
msdyn_pminferredtask
msdyn_pmprocesstemplate
msdyn_pmprocessversion
msdyn_pmtemplate
msdyn_salesforcestructuredobject
msdyn_schedule
msdyn_solutioncomponentcountdatasource
msdyn_solutioncomponentdatasource
msdyn_solutionhistory
msdyn_timelinepin
msdyn_workflowactionstatus
mspp_columnpermission
mspp_contentsnippet
mspp_entityformmetadata
mspp_entitypermission
mspp_pollplacement
mspp_publishingstate
mspp_redirect
mspp_sitemarker
mspp_webfile
mspp_webformmetadata
mspp_weblink
mspp_webpage
mspp_webrole
mspp_websiteaccess
mspp_webtemplate
newprocess
optionset
picklistmapping
pluginpackage
plugintype
powerbidataset
powerbireport
powerpagecomponent
powerpagesite
powerpageslog
principalentitymap
privilegesremovalsetting
processtrigger
publisheraddress
queue
recentlyused
recurringappointmentmaster
relationship
report
retaineddataexcel
ribbonmetadatatoprocess
roleeditorlayout
roletemplate
runtimedependency
savedqueryvisualization
sdkmessagefilter
sdkmessageprocessingstepimage
searchtelemetry
serviceendpoint
serviceplanappmodules
serviceplanmapping
sharedworkspaceaccesstoken
sharepointsite
sitemap
slaitem
solutioncomponent
solutioncomponentbatchconfiguration
solutioncomponentrelationshipconfiguration
subscriptionstatisticsoffline
synapsedatabase
synapselinkprofileentity
syncerror
systemuser
systemuserprofiles
teammobileofflineprofilemembership
teamroles
template
tracelog
transformationparametermapping
userform
userquery
virtualentitymetadata
webwizard
workflowbinary
workflowlog
workqueueitem

activityfileattachment
aicopilot_aiplugin
aipluginconversationstarter
aipluginexternalschema
aiplugininstance
aipluginoperationparameter
aiplugintitle
appaction
appactionmigration
appactionrule_webresource_scripts
appconfiginstance
applicationroles
applicationuserprofile
appmodule
appmoduleroles
appointment
attribute
attributemaskingrule
bot
bot_botcomponentcollection
botcomponent
botcomponent_botcomponent
botcomponent_dvtablesearch
botcomponent_msdyn_aimodel
botcomponentcollection
bulkdeleteoperation
calendar
canvasapp
cardentityconnections
catalog
channelaccessprofileentityaccesslevel
complexcontrol
componentversiondatasource
connectioninstance
connectionrole
connector
copilotglossaryterm
credential
customapirequestparameter
customcontrol
customcontrolresource
datalakefolderpermission
datalakeworkspacepermission
dependency
desktopflowmodule
duplicaterule
dvfilesearch
dvfilesearchentity
dvtablesearchattribute
elasticfileattachment
entityanalyticsconfig
entityimageconfig
entitykey
entityrelationship
environmentvariablevalue
exchangesyncidmapping
exportedexcel
featurecontrolsetting
fieldsecurityprofile
flowcredentialapplication
flowmachine
flowmachineimage
flowmachinenetwork
fxexpression
import
importfile
importlog
indexattributes
invaliddependency
keyvaultreference
mailmergetemplate
managedidentity
maskingrule
mobileofflineprofile
mobileofflineprofileitemassociation
monthlyfiscalcalendar
msdyn_aimodel
msdyn_appinsightsmetadata
msdyn_componentlayerdatasource
msdyn_dataflow
msdyn_dataflowconnectionreference
msdyn_datalakeds
msdyn_dmsrequeststatus
msdyn_helppage
msdyn_knowledgeassetconfiguration
msdyn_knowledgesearchfilter
msdyn_modulerundetail
msdyn_odatav4ds
msdyn_pmbusinessruleautomationconfig
msdyn_pmcalendarversion
msdyn_pmprocessextendedmetadataversion
msdyn_pmprocessusersettings
msdyn_pmrecording
msdyn_pmview
msdyn_salesforcestructuredqnaconfig
msdyn_slakpi
msdyn_solutioncomponentcountsummary
msdyn_solutioncomponentsummary
msdyn_solutionhistorydatasource
msdyn_tour
mspp_adplacement
mspp_columnpermissionprofile
mspp_entityform
mspp_entitylist
mspp_pagetemplate
mspp_powerpagescoreentityds
mspp_publishingstatetransitionrule
mspp_shortcut
mspp_sitesetting
mspp_webform
mspp_webformstep
mspp_weblinkset
mspp_webpageaccesscontrolrule
mspp_website
mspp_websitelanguage
navigationsetting
nlsqregistration
ownermapping
pluginassembly
plugintracelog
position
powerbimashupparameter
powerfxrule
powerpagecomponent_powerpagecomponent
powerpagesitelanguage
principalentitybusinessunitmap
privilege
processstage
publisher
quarterlyfiscalcalendar
queuemembership
recordfilter
recyclebinconfig
relationshipattribute
reportcategory
retentionconfig
role
roleprivileges
roletemplateprivileges
savedquery
sdkmessage
sdkmessageprocessingstep
searchresultscache
semiannualfiscalcalendar
serviceplan
serviceplancustomcontrol
sharedlinksetting
sharedworkspacenr
similarityrule
sla
solution
solutioncomponentattributeconfiguration
solutioncomponentconfiguration
solutionhistorydata
subscriptionsyncentryoffline
synapselinkprofile
synapselinkschedule
systemform
systemuserauthorizationchangetracker
systemuserroles
teamprofiles
teamtemplate
textanalyticsentitymapping
transformationmapping
translationprocess
usermobileofflineprofilemembership
userqueryvisualization
webresource
workflow
workflowcardconnections
workqueue

Voir aussi

Restaurer les enregistrements de table Microsoft Dataverse supprimés (version préliminaire)