none
從資料庫中刪除Email RRS feed

  • 问题

  • 我想刪除EMail,是從資料庫中刪除,不是用CrmService刪除,因為Email占用的資料庫的空間太大。
    不知道各位可有好辦法?
    韓建興 http://jamson.cnblogs.com
    2009年7月30日 2:39

答案

  • 在MSCRM中删除一条记录后,我们在数据库的相应表中还是会看到这条记录,mscrm并没有马上从数据库把记录删除掉,而是把该记录的属性DeletionStateCode值设置为2.系统后台运行DeletionService来定时删除这些记录,mscrm4.0这个服务是每24小时执行一次.

    看我的下面这篇blog:
    http://www.cnblogs.com/caims/archive/2008/07/08/1238328.html


    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    • 已标记为答案 Jeff.Han 2009年8月18日 1:03
    2009年7月30日 6:11
    版主

全部回复

  • 还是建议用webserice,用 BulkDelete Message 而不是用Delete Message
    Sample Code:
    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();
    accountsQuery.ColumnSet = new AllColumns();

    // Create a query expression that retrieves all contacts.
    QueryExpression contactsQuery = new QueryExpression();
    contactsQuery.EntityName = EntityName.contact.ToString();
    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;
    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    2009年7月30日 4:54
    版主
  • hi 刀客,Bulk Delete不能把Email從資料庫中刪除,從而減少資料庫的空間吧.
    我想用delete from emailbase where xxx這樣,但要考慮應該要刪除哪些表.

    韓建興 http://jamson.cnblogs.com
    2009年7月30日 5:43
  • 为什么不行?


    delete from emailbase where xxx 是unsupport的



    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    2009年7月30日 5:53
    版主
  • 哈,我試試看,我還以為bulkdelete 不會從資料庫刪除資料.只是改deletionstatecode呢.^_^
    韓建興 http://jamson.cnblogs.com
    2009年7月30日 5:54
  • 在MSCRM中删除一条记录后,我们在数据库的相应表中还是会看到这条记录,mscrm并没有马上从数据库把记录删除掉,而是把该记录的属性DeletionStateCode值设置为2.系统后台运行DeletionService来定时删除这些记录,mscrm4.0这个服务是每24小时执行一次.

    看我的下面这篇blog:
    http://www.cnblogs.com/caims/archive/2008/07/08/1238328.html


    Batistuta Cai-刀客 | 蔡敏生 | MS CRM MVP | Blog:http://caims.cnblogs.com
    • 已标记为答案 Jeff.Han 2009年8月18日 1:03
    2009年7月30日 6:11
    版主