none
Problema con depuracion de tablas de CRM 4 RRS feed

  • 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.

    lunes, 24 de octubre de 2011 20:08

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"

    martes, 2 de abril de 2013 20:20
    Moderador

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
    martes, 25 de octubre de 2011 7:18
    Moderador
  • 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.

    martes, 2 de abril de 2013 18:52
  • 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"

    martes, 2 de abril de 2013 20:20
    Moderador
  • 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

    miércoles, 3 de abril de 2013 7:13