Администрирование
06
Авг
4

Форсирование удаления записей из БД Microsoft CRM 4.0

Как Вы знаете (или не знаете), когда пользователь удаляет какую-либо запись в Microsoft CRM через пользовательский интерфейс или SDK, запись не удален сразу. Она просто помечается в БД специальным «флагом» (поле DeletionStateCode в таблице соответствующего объекта обновляется с 0 на 2). Сам же процесс удаления из БД происходит позже и удаляет записи, которые были «отмечены для удаления». Это сделано потому, что операция DELETE в SQL более интенсивная, по сравнению с операцией UPDATE.

В Microsoft CRM 1.x и 3.0 асинхронное удаление выполнял сервис Windows, установленный на CRM сервере. В Microsoft CRM 4.0, эта процедура была перемещена в новый объект Asynchronous Operation и работает через ту же систему, что и события Бизнес-процессов, например, и все другие асинхронные «действия» (такие как Поиск дубликатов и срабатывание плагинов). Время и частота, с которой выполняется операция удаления, управляются на уровне развертывания CRM системы (и по умолчанию удаление срабатывает каждые 24 часа).

Во время разработки, тестирования или переносе данных, может быть полезно вынудить Microsoft CRM выполнить операцию удаления принудительно. В Microsoft CRM 3.0 это могло быть сделано, путем запуска сервис удаления с определенным параметром.

К сожалению, теперь, когда эта операция часть Asynchronous Service, этот способ больше не работает. Но если Вам очень нужно, то можете сделать это через БД CRM.

  1. Запустите SQL Management Studio и выполните следующий SQL script в отношении базы MSCRM_CONFIG:
    USE MSCRM_CONFIG
    UPDATE dbo.ScaleGroupOrganizationMaintenanceJobs
    SET NextRunTime = getdate() -- текущая дата и время
    WHERE OperationType = 14 -- Deletion Service
    
  2. Перезапустите Microsoft CRM Asynchronous Service: Start — Programs — Administrative Tools — Services — щелкните правой кнопкой мыши по Microsoft CRM Asynchronous Processing Service и выберите Restart.



Учтите, что это лютый ансапорт и поставляется по принципу «AS IS»!

Комментарии (4)
  • Флудер 06.08.2009

    Стесняюсь просить: у вас че миллион клиентов на одном серваке сидит, что аж приходится откладывать удаление чтоб ни дай бог загрузить сервак?!?!

  • slivka_83 06.08.2009

    Вопрос не понятен? что значит откладывать удаление?

  • usercrm 06.08.2009

    Думаю,что Флудер хотел спросить так:»Нафига?!» 🙂
    В какой ситуации это вам может понадобиться?

  • slivka_83 06.08.2009

    А я думаю что флудер это что-то типа спам бота 🙂
    Касательно Вашего вопроса… Причин может много… например, в свое время в срм был косяк из-за которого записи не удалялись из БД вообще 🙂 вышел хотфикс, Вы захотели его протестить… будете ждать сутки?
    или например Вы разрабатываете аддон который массово удаляет записи по какому-либо признаку… ну тут уж тестирования будет моря и после каждого шага ждать сутки чтобы проверить, что записи и из БД удаляются нормально, как-то не продуктивно 🙂

*

code