Principales respuestas
Problema con depuracion de tablas de CRM 4

Pregunta
-
el problema es el siguiente, quisera depurar estas tablas, que tiene el propio crm 4 en sql server:
- PrincipalObjectAccess
- ActivityPartyBase
- ActivityPointerBase
- ListMemberBase
porque tengo mas de un millon de registros, por eso la depuracion.
Gracias por su tiempo.
Respuestas
-
para esto simplemente debes eliminar actividades, esto provocará que pierdas informacion, pero si puedes asumir esta perdida, lo que te recomiendo es que te desarrolles una aplicacion en .NET que haga una consulta a las actividades, filtrando por el criterio que determines para eliminar (por ejemplo las de hace mas de un año), y las elimines a traves de la SDK, que es la manera soportada de hacerlo.
asi las eliminas una a una, pero lo mejor es que hagas lo siguiente mediante un mensaje especial para "borrados masivos" (mas info http://msdn.microsoft.com/en-us/library/cc155955.aspx):
// Set up the CRM Service. CrmAuthenticationToken token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = "AdventureWorksCycle"; CrmService service = new CrmService(); service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx"; service.CrmAuthenticationTokenValue = token; service.Credentials = System.Net.CredentialCache.DefaultCredentials; // Create a query expression that retrieves all accounts. QueryExpression accountsQuery = new QueryExpression(); accountsQuery.EntityName = EntityName.account.ToString(); // Be aware that using AllColumns may adversely affect // performance and cause unwanted cascading in subsequent // updates. A best practice is to retrieve the least amount of // data required. accountsQuery.ColumnSet = new AllColumns(); // Create a query expression that retrieves all contacts. QueryExpression contactsQuery = new QueryExpression(); contactsQuery.EntityName = EntityName.contact.ToString(); // Be aware that using AllColumns may adversely affect // performance and cause unwanted cascading in subsequent // updates. A best practice is to retrieve the least amount of // data required.; contactsQuery.ColumnSet = new AllColumns() // Create a request. BulkDeleteRequest request = new BulkDeleteRequest(); request.JobName = "Delete all accounts and contacts"; request.QuerySet = new QueryBase[] { accountsQuery, contactsQuery }; request.SendEmailNotification = false; request.ToRecipients = new Guid[0]; request.CCRecipients = new Guid[0]; request.RecurrencePattern = string.Empty; request.StartDateTime = new CrmDateTime(); request.StartDateTime.Value = DateTime.Now.ToString("s"); // Execute the request. BulkDeleteResponse response = (BulkDeleteResponse)service.Execute(request); Guid jobId = response.JobId;
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"
- Propuesto como respuesta Demian Adolfo RaschkovanMVP, Moderator martes, 2 de abril de 2013 20:20
- Marcado como respuesta Demian Adolfo RaschkovanMVP, Moderator sábado, 27 de abril de 2013 9:09
Todas las respuestas
-
Hola RealMaster, con "depurar" te refieres a reducir sus tamaños? esas tablas no puedes reducirlas sin perder informacion, ya que son nucleares y necesarias de CRM.
PrincipalObjectAccess : contiene la informacion de los registros de comparticiones. es para temas de seguridad. para reducir esto, deberías eliminar comparticiones de registros.
ActivityPartyBase : son los participantes de las actividades. para reducir esto, deberías eliminar actividades
ActivityPointerBase : es la entidad comun que se usa como "cabecera" de los diferentes tipos de actividades. para reducir esta tabla debes eliminar actividades
ListMemberBase : son los integrantes de las listas de marketing, para reducir esta tabla debes eliminar listas de marketing.
esper te sirva, un saludo,
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com- Propuesto como respuesta Demian Adolfo RaschkovanMVP, Moderator martes, 25 de octubre de 2011 7:18
-
Hola
Tengo instalado el CRM4. Tengo la misma necesidad que el post. Necesito eliminar informacion de las tablas ActivityPartyBase ,ActivityPointerBase.
Necesito saber si existe algun procedimiento documentado por Microsoft o como podria eliminar los registros de estas tablas para liberar espacio en la base de datos y por ende en el disco duro del servidor.
Freddy Encinas M.
-
para esto simplemente debes eliminar actividades, esto provocará que pierdas informacion, pero si puedes asumir esta perdida, lo que te recomiendo es que te desarrolles una aplicacion en .NET que haga una consulta a las actividades, filtrando por el criterio que determines para eliminar (por ejemplo las de hace mas de un año), y las elimines a traves de la SDK, que es la manera soportada de hacerlo.
asi las eliminas una a una, pero lo mejor es que hagas lo siguiente mediante un mensaje especial para "borrados masivos" (mas info http://msdn.microsoft.com/en-us/library/cc155955.aspx):
// Set up the CRM Service. CrmAuthenticationToken token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = "AdventureWorksCycle"; CrmService service = new CrmService(); service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx"; service.CrmAuthenticationTokenValue = token; service.Credentials = System.Net.CredentialCache.DefaultCredentials; // Create a query expression that retrieves all accounts. QueryExpression accountsQuery = new QueryExpression(); accountsQuery.EntityName = EntityName.account.ToString(); // Be aware that using AllColumns may adversely affect // performance and cause unwanted cascading in subsequent // updates. A best practice is to retrieve the least amount of // data required. accountsQuery.ColumnSet = new AllColumns(); // Create a query expression that retrieves all contacts. QueryExpression contactsQuery = new QueryExpression(); contactsQuery.EntityName = EntityName.contact.ToString(); // Be aware that using AllColumns may adversely affect // performance and cause unwanted cascading in subsequent // updates. A best practice is to retrieve the least amount of // data required.; contactsQuery.ColumnSet = new AllColumns() // Create a request. BulkDeleteRequest request = new BulkDeleteRequest(); request.JobName = "Delete all accounts and contacts"; request.QuerySet = new QueryBase[] { accountsQuery, contactsQuery }; request.SendEmailNotification = false; request.ToRecipients = new Guid[0]; request.CCRecipients = new Guid[0]; request.RecurrencePattern = string.Empty; request.StartDateTime = new CrmDateTime(); request.StartDateTime.Value = DateTime.Now.ToString("s"); // Execute the request. BulkDeleteResponse response = (BulkDeleteResponse)service.Execute(request); Guid jobId = response.JobId;
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"
- Propuesto como respuesta Demian Adolfo RaschkovanMVP, Moderator martes, 2 de abril de 2013 20:20
- Marcado como respuesta Demian Adolfo RaschkovanMVP, Moderator sábado, 27 de abril de 2013 9:09
-
Hola Mago,
Te dejo algunos link de la pagina de Microsoft que te pueden ayudar con lo que solicitas
http://support.microsoft.com/kb/968520
http://support.microsoft.com/kb/959248
http://support.microsoft.com/kb/959248
Salu2 Atilin | http://www.dexrm.com