Restaurar registros eliminados con código (versión preliminar)
[Este artículo es documentación preliminar y está sujeto a modificaciones].
A veces las personas eliminan registros que no deberían. Los administradores pueden habilitar una papelera de reciclaje para tablas para que puedan restaurar registros eliminados dentro de un período de tiempo específico. Descubra cómo los administradores pueden restaurar registros eliminados
Cuando la papelera de reciclaje está habilitada, los desarrolladores pueden usar el mensaje Restore
para restaurar el registro eliminado antes del período de tiempo especificado. El periodo de tiempo puede ser de hasta 30 días.
Recuperar registros eliminados que se pueden restaurar
Para recuperar registros eliminados que se puedan restaurar, establezca la fuente de datos de la consulta en 'bin
'.
Los ejemplos siguientes devuelven hasta tres registros de cuenta eliminados.
Al usar el SDK, puede recuperar datos usando FetchXml o QueryExpression.
Cuando recupere datos usando FetchXml, establezca el atributo elemento de búsqueda datasource
en 'bin
' cuando recupere registros.
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);
}
Cuando recupere datos usando QueryExpression, establezca la propiedad QueryExpression.DataSource en ''bin
" cuando recupere registros.
static EntityCollection GetDeletedAccountRecordsQueryExpression(IOrganizationService service) {
QueryExpression query = new("account") {
ColumnSet = new ColumnSet("name"),
DataSource = "bin",
TopCount = 3
};
return service.RetrieveMultiple(query);
}
Restaurar un registro eliminado
Utilice el mensaje Restore
para restaurar un registro eliminado. El parámetro Target
no es una referencia a un registro eliminado, es un registro completo para que pueda establecer valores de columna mientras restaura el registro. Todos los valores de las columnas originales se restauran a menos que los anule estableciendo valores durante la operación Restore
.
Nota
En este momento, solo puede restaurar registros utilizando el valor de la clave principal. No puede utilizar un clave alternativa para restaurar un registro.
La forma de restaurar un registro eliminado depende de si está utilizando el SDK para .NET o la API web.
La forma de restaurar un registro utilizando el SDK para .NET depende de si está generando tipos enlazados anticipadamente utilizando pac modelbuilder, o si está utilizando el estilo de encuadernación tardía.
Ejemplo de enlace adelantado
El método estático RestoreAccountRecordEarlyBound
utiliza las clases RestoreRequest<T>
y Account
generadas usando el 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;
}
Ejemplo de enlace tardío
El método estático RestoreAccountRecordLateBound
utiliza la clase OrganizaciónSolicitud clase para invocar el mensaje Restore
, configurando el parámetro 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"];
}
Mejores prácticas al restaurar registros
Los siguientes son problemas que puede evitar al restaurar registros:
- Restaurar registros relacionados antes de restaurar el registro principal
- No especifique valores de clave principal al crear registros
- Restauración del bloque de registros con valores clave alternativa coincidentes
- Los registros que utilizan opciones de elección eliminadas no se restauran
- Violación de clave principal al eliminar
Restaurar registros relacionados antes de restaurar el registro principal
Si algunos registros relacionados cuya referencia se eliminó como parte de la relación en cascada ya no existen, la operación de restauración falla. Para evitar este problema, restaure siempre los registros relacionados que no se eliminaron como parte del registro actual antes de intentar restaurar el registro principal.
Nombre:
RefCannotBeRestoredRecycleBinNotFound
Código:0x80049959
Número:-2147182247
Mensaje: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>
No especifique valores de clave principal al crear registros
Generalmente es una buena práctica dejar siempre que Dataverse establezca la clave principal al crear un registro. Si crea un registro nuevo que tiene el mismo valor de clave principal que un registro eliminado, el registro eliminado no se puede restaurar. Si lo hace, debe eliminar el nuevo registro antes de poder restaurar el eliminado.
Nombre:
DuplicateExceptionRestoreRecycleBin
Código:0x80044a02
Número:-2147182279
Mensaje: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.
Restauración del bloque de registros con valores clave alternativa coincidentes
Si crea un registro que tiene los mismos valores de columna clave alternativa que un registro eliminado, no podrá restaurarlo. Si lo hace, debe eliminar el nuevo registro antes de poder restaurar el eliminado.
Nombre:
DuplicateExceptionEntityKeyRestoreRecycleBin
Código:0x80049929
Número:-2147182295
Mensaje: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.
Los registros que utilizan opciones de elección eliminadas no se restauran
Si elimina una opción del conjunto de opciones y esa opción se usó en un registro eliminado, no puede restaurarla porque la opción ahora no es válida. Antes de eliminar una opción conjunto de opciones, verifique que ningún registro utilice esa opción, incluidos los registros eliminados.
Nombre:
PicklistValueOutOfRangeRecycleBin
Código:0x80049949
Número:-2147182263
Mensaje:Picklist value not valid, please add the invalid value back to the picklist before restoring record
Violación de clave principal al eliminar
Si el registro con la misma clave principal ya se eliminó antes, se ignora la copia a la papelera de reciclaje para el registro. Para hacer cumplir que todos los elementos eliminados se almacenen en la papelera de reciclaje, puede configurar la opción DoNotEnforcePrimaryKeyOrgSettingRecycleBin
usando la Herramienta OrgDBOrgSettings para Microsoft Dynamics CRM.
Después de habilitar esta configuración, es posible que reciba el siguiente error:
Nombre:
DuplicateExceptionRestoreRecycleBin
Código:0x80049939
Número:-2147182279
Mensaje:A record that has the attribute values Deleted Object already exists on Delete.
Detectar qué tablas están habilitadas para la papelera de reciclaje
Antes de habilitar la función de papelera de reciclaje, la Tabla de configuración de la papelera de reciclaje (RecycleBinConfig) no tiene filas.
Con el tiempo, esperamos que la mayoría de las tablas estén disponibles para usar la función de papelera de reciclaje. Los componentes de la solución, las tablas virtuales y las tablas elásticas no son compatibles con la papelera de reciclaje. Durante este versión preliminar, algunas tablas que no están habilitadas actualmente podrían habilitarse más adelante (por ejemplo, tablas con más de 400 columnas). Para obtener una lista de tablas que no admiten la papelera de reciclaje, consulte Tablas que actualmente no son compatibles con la Papelera de reciclaje.
También puede desactivar la papelera de reciclaje para tablas específicas y desactivar la papelera de reciclaje para el entorno. Si la papelera de reciclaje no está habilitada para una tabla, no podrá encontrar cualquier registro elegible para ser restaurado. Puede consultar Dataverse para saber si la papelera de reciclaje está habilitada para una tabla o no.
Las tablas que están habilitadas para la papelera de reciclaje tienen una fila en la tabla RecycleBinConfig
donde el statecode
está activo y isreadyforrecyclebin
es verdadero. La tabla RecycleBinConfig
no contiene el nombre de la tabla, pero hace referencia a una fila en la tabla de entidades donde la columna logicalname
contiene el LogicalName de la tabla.
Use la siguiente consulta FetchXml para detectar qué tablas tienen habilitada la papelera de reciclaje:
<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>
Aprenda a consultar datos usando FetchXML
Detectar qué tablas no tienen habilitada la papelera de reciclaje
Para saber qué tablas no están habilitadas para la papelera de reciclaje, use la siguiente consulta FetchXml que es la inversa de la que se encuentra en Detectar qué tablas están habilitadas para la papelera de reciclaje.
<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>
Aprenda a consultar datos usando FetchXML
Los resultados de esta consulta a partir de mayo de 2024, cuando comenzó esta función de vista previa, están disponibles en Tablas que actualmente no son compatibles con la Papelera de reciclaje
Recuperar y establecer la configuración del período de tiempo de limpieza automática para la papelera de reciclaje
El valor para determinar cuánto tiempo los registros eliminados están disponibles para ser restaurados se establece en la columna RecycleBinConfig.CleanupIntervalInDays donde el valor de la columna Nombre es organization
. Cada dos filas en la tabla RecycleBinConfig
tiene un valor de columna CleanupIntervalInDays
de -1
. Este valor indica que utiliza los mismos valores establecidos para la tabla organization
.
Para especificar un valor diferente para otra tabla, establezca el valor de columna CleanupIntervalInDays
donde Name
coincide con el nombre lógico de la tabla. Esta columna permite valores hasta 30; recomendamos no configurarla a menos que sea diferente del valor predeterminado de la organización.
Puedes usar el modo estático SetCleanupIntervalInDays
para configurar el valor de columna CleanupIntervalInDays
para una tabla específica.
/// <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.");
}
}
Deshabilitar la papelera de reciclaje para una tabla
Para deshabilitar la papelera de reciclaje de una tabla, deshabilite el registro recyclebinconfig
de la tabla configurando las propiedades statecode y statuscode a su valores Inactivo: 2
y 1
, respectivamente.
Nota
Las siguientes consultas comparan el valor de EntityId
contra el valor de la columna Entity.EntityId, que almacena la tabla EntityMetadata.MetadataId .
Usa este método estático DisableRecycleBinForTable
para desactivar la papelera de reciclaje para una tabla específica.
/// <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);
}
}
Deshabilitar la papelera de reciclaje para el entorno
Nota
La forma preferida de desactivar la papelera de reciclaje para un entorno es desactivarla en el centro de administración de Power Platform. El método descrito aquí puede cambiar antes de que la función esté disponible de forma generalizada.
Eliminar la fila en la tabla RecycleBinConfig donde el valor name
es "organization"
. Esto desencadena la eliminación de todos los registros en la tabla RecycleBinConfig
y deshabilita a papelera de reciclaje en el entorno.
Importante
No intente eliminar otros registros individuales. Es importante que Dataverse gestione esto.
Gestionar la restauración de registros eliminados mediante lógica de negocios personalizada
Dataverse proporciona un mecanismo para gestionar las acciones deseadas para registros relacionados cuando se elimina una fila. Estos datos de configuración son parte de la definición de la relación. Cuando se elimina un registro relacionado, hay cuatro comportamientos posibles que puede configurar:
Eliminar comportamiento | Description |
---|---|
Poner todas en cascada | Los registros relacionados se eliminan. |
Quitar vínculo | Las columnas de búsqueda del registro eliminado se establecen en nulo. |
No poner ninguna en cascada | No se aplican cambios a los registros relacionados. (Solo interno) |
Restringida | Dataverse evita la eliminación del registro para mantener la integridad de los datos. El registro no se puede eliminar a menos que no haya registros relacionados para esta relación. |
Más información sobre comportamientos de relación
No hay nada que hacer cuando la relación está configurada para Cascada todo, Quitar enlace, y Restringir porque Dataverse gestiona estos comportamientos.
Si tiene una relación configurada para usar el comportamiento Quitar enlace, pero esta relación debería eliminar el registro relacionado, es posible que tenga una lógica personalizada que aplique algún comportamiento personalizado. Por ejemplo, es posible que desee responder a este comportamiento de manera diferente e implementar su propio comportamiento "Parte en cascada" basado en reglas que usted define. Por ejemplo, puede eliminar registros inactivos o registros que no se actualizaron en un período de tiempo determinado. Esta lógica generalmente se implementa mediante un complemento, pero también se puede hacer usando Power Automate con el conector Microsoft Dataverse: cuando se agrega, modifica o elimina una fila.
Si tiene este tipo de lógica de negocios personalizada, entonces Dataverse no la conoce y no puede "deshacer" automáticamente su lógica. Sin embargo, puede registrar otro complemento en el mensaje Restore
para revertir cualquier lógica personalizada que tenga. O podría usar Power Automate y el conector Microsoft Dataverse: Cuando se realiza una acción, se activa.
Importante
Tenga cuidado con el contexto cuando registre los pasos del complemento para el mensaje Restore
. El registro que se está restaurando no estará disponible en la etapa PreOperation
. Si es necesario crear registros relacionados, utilice la etapa PostOperation
. Más información sobre fases de complemento.
Los InputParameters y OutputParameters del mensaje Restore
son similares al mensaje Create
, por lo que los complementos escritos para registrarse para el mensaje Create
se pueden reutilizar para el mensaje Restore
con menos cambios.
Actualmente, las tablas no son compatibles con la Papelera de reciclaje
Las siguientes tablas son el resultado de la consulta encontrada en Detectar qué tablas no tienen la papelera de reciclaje habilitada en mayo de 2024, cuando comenzó la vista previa de esta función. Las tablas privadas no están incluidas en esta lista.
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
Consulte también
Restaurar registros de tabla eliminados de Microsoft Dataverse (versión preliminar)