Администрирование
03
Дек
38

Перенос продуктивной CRM-системы в тестовую среду

Очень часто во время разработки и/или тестирования приложений требуется точная (ну, или почти точная) копия промышленной среды. В частности, при тестировании бывают случаи, когда ошибка воспроизводится только на продуктивной среде. Одним из решений является перенос продуктивной базы в тесовую/девелоперскую среду.

Но в случаи MS CRM простым копипастом тут не отделаться (а жаль 🙂 ). Для этого нужно сделать несколько не хитрых действий:

  • C помощью SQL Server Management Studio сделайте бэкап базы данных <ORG>_MSCRM;
  • Скопируйте .bak в тестовую среду и выполните следующий SQL запрос (соответственно изменив в нем путь к файлу с бэкапом и название организации):
    restore database newfirma_MSCRM
    from disk='C:\mscrm.bak' WITH
    MOVE 'mscrm' TO 'C:\newfirma_MSCRM.mdf',
    MOVE 'mscrm_log' TO 'C:\newfirma_MSCRM_log.LDF'
    


  • Запустите Deployment Manager, перейдите к разделу Organizations и щелкните Import Organization;
  • Введите имя SQL Server’а на котором восстановили бэкап. В ниспадающий список тут же подтянутся доступные организации, который составляется из имен баз данных <ORG>_MSCRM. Выберите нужную.
  • Введите отображаемое и системное имя, которые будут назначены импортируемой организации;
  • На следующем шаге укажите URL Reporting Services;
  • Далее нужно произвести сопоставление пользователей, которые были созданы в импортируемой организации и пользователей из Active Directory в текущей среде. Для этого есть несколько опций, самый простой из них это ручное сопоставление (но если у Вас та же самая среде или те же самые пользователи, то быстрее будет автоматическое сопоставления). При ручном сопоставление, в следующем окне, нужно для каждой строки пользователя из импортируемой организации сопоставить имя пользователя из Active Directory (для чего нужно воспользоваться стандартным поиском);



  • В следующем окне продет проверка среды, нажмите «Next». Затем окно с итоговой информацией и «Import».
    На этом все! После того как импорт закончится, можете открывать новую организацию по стандартной ссылки (только не забудьте заменить в ней имя организации на новое 🙂 ):

    http://crmserver/orgname/loader.aspx



Комментарии (38)
  • Азат 03.12.2009

    А где взять Deployment Manager?
    Если эта штука включена в windows server 2008r2 RUS или SQL server 2008r2 RUS, объясните где находится.
    В противном случае ссылку для скачивания в студию!

  • Азат 03.12.2009

    О! Вроде сам нашел ответ.

    Откройте CRM 4.0 Deployment Manager (Start -> All Programs -> Microsoft Dynamics CRM -> Deployment Manager)

    Теперь другой вопрос: получается, есть 2 способа переноса:

    1. Сначала подключение бекапа базы к SQL Server, затем установка CRM сервера на имеющуюся базу.

    2. Установка CRM сервера на чистый SQL Server, затем подключение бекапа базы.

    Какой из них предпочтительнее? Плюсы и минусы?

  • slivka_83 03.12.2009

    Ну, я бы выбрал первый, только потому что он проще (меньше действий нужно выполнить) 🙂 В остальном принципиальных отличий не вижу.

  • alljoke 03.12.2009

    А если не видит Деплоймент Манагер организаци. Говорит не могу подрубиться к скулю либо организаций нет. Как быть?

  • Паша 03.12.2009

    Если не может найти Деплоймент Манагер организацию, тогда как быть?

  • slivka_83 03.12.2009

    Создать новую в этом же Деплоймент Менеджере!? 🙂

  • Паша 03.12.2009

    А как же данные из оригинальной перенести в тестовую? Причем оригинальная находится в другом домене.

  • slivka_83 03.12.2009

    Копируете бэкап БД орг_MSCRM на тестовый SQL сервер и через деплоймент менеджер выполняете импорт БД (той, которую скопировали на тестовый SQL сервер).

  • Leon 03.12.2009

    Интересноа чтомогло вызвать у второй условно ньюфирмы вначале статус pending и затем её исчезновение из менеджера.

  • slivka_83 03.12.2009

    Добрый день 🙂 вопрос к сожалению не понятен 🙂

  • Leon 03.12.2009

    Извиняюсь что неверно сформулировал. Имелось ввиду что после развертывания клона он показал надпись пендинг, а потом исчез. Как показала практика это по причине большого фаила транзакций (240 гиг) который пытался генерить Deployment Manager. Отличная и свежая идея микрософт, требовать править реест после патча руками. Занятно что ролап 18 как бы фиксит этот баг, но все равно требует дописать в реестр строчку (но узнать об этом можно только в патче 6).

  • corwax 03.12.2009

    Доброго,
    После переноса CRM, с одного домена в другой, при доступе через веб, внутри домена, начал запрашивать имя пользователя и пароль.
    Подскажите как отключить.
    win 2008 r2
    sql 2008 r2
    iis7
    ie8

  • slivka_83 03.12.2009

    Здрасьте 🙂

    Ну настройки автоматического залогирпования настраиваются в браузере. Надо добавить сайт CRM в одну из зон безопасности и для нее включть автоматичский вход под текщем пользователем!

  • corwax 03.12.2009

    спасибо, странно, но до переноса и так все автоматом заходило 🙂

  • Олеся 03.12.2009

    Добрый день!
    У меня такой вопрос:
    в компании развернута CRM, в которой работают все пользователи.
    Мы хотим развернуть еще тестовую CRM с такими же данными, то есть привязанную к копии актуальной SQL-базы, на отдельной виртуалке, чтобы на ней отлаживать все серьезные кастомизации.

    Могут ли возникнуть какие-либо проблемы, например при привязке обеих CRM к одной Active Directory?

    Не хотелось бы потерять нужные данные и поломать то, что мы имеем…

  • slivka_83 03.12.2009

    Добрый день!

    CRM создает в Active Directory для каждой организации свой набор групп (PrivUserGroup и т.д.). И в названии каждой такой группы используется GUID соответствующей организации. Поэтому привязка нескольких CRM к одной Active Directory никак не должна повлиять на CRM.

    З.Ы. ну а вообще бэкапы рулят 🙂

  • Arslan 03.12.2009

    при импорте организации пишет Microsoft Dynamics CRM Reporting Extensions must be installed on SQL Server Reporting Services for reports to work. Кто знает как с этим броться?

  • Arslan 03.12.2009

    … хотя на сервер SQL CRM Reporting Extensions был установлен без ошибок

  • slivka_83 03.12.2009

    На какой сервер Вы его установили?

  • Виталий 03.12.2009

    Я правильно понимаю, что на одном sql сервере тестовая база и оригинальная жить не смогут?

  • slivka_83 03.12.2009

    Вполне могут 🙂 Достаточно создать новую организацию в CRM 🙂

  • Uberz 03.12.2009

    Такая ошибка возникает если пробую добавить копию базы newfirma_MSCRM (это копия основной базы), используя import organization из deployment manager

    Import Organization (Name=newfirma, Id=015e92aa-c3a3-e111-817b-0015179d8113) failed with Exception:
    System.Data.SqlClient.SqlException: Невозможно вставить повторяющуюся ключевую строку в объект «dbo.SystemUserOrganizations» с уникальным индексом «SystemUserOrganizations_CrmUserId».
    Выполнение данной инструкции было прервано.

  • Uberz 03.12.2009

    Import Organization (Name=newfirma, Id=9129eff4-6ba5-e111-b44f-0015179d8113) failed with Exception:
    System.InvalidOperationException: Для ExecuteNonQuery нужно открытое и доступное подключение. Подключение закрыто.

    З.Ы.: большое спасибо за статью это походу правильное решение, но тогда мне нужно бороться с причиной невозможности импорта вообще. В прошлый раз, когда я не смог сделать импорт я решил проблему выставив в реестре параметр OptimizeOrgImport = 1, а теперь его нужно сделать =0, но с таким значением параметра выскакивает ошибка написанная выше.

    Пробовал менять параметры OLEDBTIMEOUT (65534), MaxUserPort (65534), TCPTimedWaitDelay(30). Результата нет. Помогите пожалуйста решить проблему я уже не знаю даже куда копать.

  • Uberz 03.12.2009

    Да смотрел, там кстати и рекомендуют параметры реестра менять. Те что я назвал выше + OptimizeOrgImport сделать равным 1.
    Проблему решил, все дело было в том что после переноса CRM на новый сервер, либо по моей ошибке, либо по недосмотру, либо оно так по умолчанию и ставится; CRMappPool использовал учетку network service. И в итоге у меня не работало создание новых пользователей, при отладке не хватались точки остановки и не импортировалась организация с параметром реестра OptimizeOrgImport = 0. Временно поставил на Admin и пошел искать какие права должны быть на этой учетке.

  • Николай 03.12.2009

    Добрый день, подскажите пожалуйста недавно начал переносить на новый сервер crm, и при попытки импорта организации выдаёт такую строку, раньше вроде все переносилось на этот же сервер…:

    System.InvalidOperationException: Для ExecuteNonQuery нужно открытое и доступное подключение. Подключение закрыто.

  • slivka_83 03.12.2009

    Здрасьте. Нет, не сталкивался с такой. Попробуйте в гугле поискать.

  • Николай 03.12.2009

    Вобщем то решение нашел, оказывается для того чтобы одну базу несколько раз переносить на один сервер нужно HotFix от Microsofta применить..он там в реестре ключик какой то с 0 на 1 меняет помоему.

  • Дмитрий 03.12.2009

    Добрый день.
    После импорта организации на тестовый сервер, при попытке входа выдает сообщение:
    ExecuteNonQuery требует, чтобы команда имела транзакцию, если подключение, назначенное команде, находится в отложенной локальной транзакции Свойство Transaction для команды не инициализировано.

    Может кто сталкивался с таким?

  • Дмитрий 03.12.2009

    Спасибо огромное!
    Мне помогла первая статья )
    http://osmosee.wordpress.com/2010/11/03/crm-organization-import/

  • Гость 03.12.2009

    Сделал всё так как описано в статье, ошибок не выдал, но импорта не произошло. Пустая страница, 404.

  • slivka_83 03.12.2009

    По одному этому описанию не сказать — нужно смотреть, дебажить.

  • Aks O. 03.12.2009

    Cлава.
    подскажи, плз, это только для 4.0? Если сделать тоже самое на 2013, получится?

  • slivka_83 03.12.2009

    Привет.
    Да, должно. Принцип один и тот же 🙂

  • Aks O. 03.12.2009

    Привет!
    Спасибо за ответ!
    Подскажи, пожалуйста, откуда вот эти два файла взять:
    MOVE ‘mscrm’ TO ‘С:\newfirma_MSCRM.mdf’,
    MOVE ‘mscrm_log’ TO ‘С:\newfirma_MSCRM.log.LDF’

    При простом разворачивании бэкапа у меня выдает:
    Логический файл «mscrm» не является частью базы данных «newfirma_MSCRM». Используйте RESTORE FILELISTONLY для вывода списка имен логических файлов.
    Сообщение 3013, уровень 16, состояние 1, строка 1
    RESTORE DATABASE прервано с ошибкой.

  • slivka_83 03.12.2009

    уже так не вспомню… нужно эксперементировать.
    Судя по описанию ошибки это какие то логические имена, которые были зашиты в бэкап.

*

code