Как поменять сервер базы данных Microsoft Dynamics CRM

Обновлено 01.09.2022

Microsoft Dynamics CRM logo

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами научились находить информацию, о причине блокировки учетной записи пользователя Active Directory, это было похоже на детективное расследование. Идем далее и сегодня я хочу вам показать, как вы можете поменять имя базы данных Microsoft Dynamics CRM и не сломать его. Данная информация будет актуальна для людей, у кого еще в компании сохранились такие замечательные продукты, как Microsoft Dynamics CRM 2011/4.0. Давайте приступать

🆘Описание проблемы

Если вы попытаетесь поменять имя сервера с Microsoft Dynamics CRM, или изменить имя базы данных с сервером, то вы легко столкнетесь с проблемами:

  • CRM deployment Manger will give exception (Диспетчер развертывания CRM даст исключение)
  • Record not found when you try to open  crm url in explorer (Запись не найдена, когда вы пытаетесь открыть URL-адрес crm в проводнике)
  • Server ID not found (Идентификатор сервера не найден)

Microsoft Dynamics CRM в это плане вообще капризная штука, чего только стоит ошибка "HTTP 400 Bad Request/The webpage cannot be found", где мы упирались в размер токена Kerberos. Я честно никогда не понимал, в чем была причина такой сложной концепции по изменению сервера базы данных, или имени нод отвечающих за софт, такое же поведение мы видели и при смене базы данных AD RMS, видимо тогда это проектировала одна и та же команда.

Вместо тога, чтобы сделать красивую кнопку для смены параметров, ну или на худой конец вынести это в конфигурационный файл, они это сделали через правку реестра Windows, что очень не дружелюбно. Но делать нечего, давайте покажу что и где менять.

🛠Алгоритм изменения сервера баз данных CRM

Суть метода по изменениям в MS CRM, это:

  • 1️⃣Изменения в реестре
  • 2️⃣Изменения в базе данных

На сервере MS CRM вызовите окно "Выполнить" и введите:

regedit

Чтобы запустить окно редактора реестра Windows.

Вызов окна реестра

Далее вам необходимо пройти по пути:

HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSCRM

Тут нас будет интересовать два ключа:

  • configdb - Описывает к какой базе данных нужно подключаться. Вам нужно изменить имя сервера базы данных в этом ключе (Data Source = DNS-имя сервера БД; Initial Catalog (Исходный каталог) = MSCRM_CONFIG; ;Integrated Security (Встроенная безопасность) = SSPI)
  • ServerUrl - это URL службы CRM, здесь также необходимо изменить имя сервера. Если меняете порт, то измените так же значение ключа LocalSdkPort
  • LocalSdkPort- Позволяет переопределить порт подключения

Ключи реестра задающие месторасположение базы данных MS CRM

На сервере MS CRM мы закончили изменения. По хорошему после изменения данных параметров, вам нужно будет рестартнуть службу, а лучше вообще сервер. Теперь создайте резервную копию базы данных MSCRM_CONFIG и Organization_MSCRM  и восстановите их на только что созданном SQL Server.

Далее делаем изменения на сервере баз данных. Откройте сервер базы данных с пользователем, имеющим доступ к базе данных конфигурации CRM "MSCRM_CONFIG", потом откройте редактор запросов в этой базе данных и выполните следующие запросы:

UPDATE ConfigSettings SET

[HelpServerUrl] = 'http://DNS-имя вашего сервера:5555/'

Далее

PDATE Organization SET

[ConnectionString] ='Provider=SQLOLEDB;Data Source=YourDatabaseServerName;Initial Catalog=YourOrganizationDatabase;Integrated Security=SSPI',

[SqlServerName] ='YourDatabaseServerName',

[SrsUrl] ='http://YourReportingServerName/reportserver'

UPDATE [Server] SET

[Name] = 'YourServerName'

Обратите внимание, что я предполагаю, что у вас есть только один экземпляр CRM, установленный на сервере базы данных вашей организации, в противном случае вам нужно добавить предложение WHERE с соответствующими первичными идентификаторами.

Еще вариант:

update Organization set

ConnectionString='Data Source=DNS-имя сервера БД\Инстанс;Initial Catalog=HighTechnology_MSCRM;Connection Timeout=600;User ID=sa;Password=mann' ,SqlServerName='DNS-имя сервера БД\Инстанс', SrsUrl='http://win-http://crmserver/ReportServer_CRM2011'

Почти ручной вариант:

  • Откройте SQL Server Managment Studio-> перейдите к MSCRM_CONFIG->Tables-> найдите dbo.Organization-> Щелкните правой кнопкой мыши-> Edit первые 200 строк
  • Найдите столбец "Connection string" и измените значение "data source=" на новое имя экземпляра SQL-сервера. (в моем случае это был "sql006" -> новый сервер sql "sql006\sql2017")
  • Найдите столбец "SQLServerName" и измените данные на новое имя экземпляра SQL Server («sql006» -> «sql006\sql2017»)

Отключите брандмауэр между этими двумя серверами. Я проверил это на тестовом сервере, и все работает нормально. Рекомендую вам протестировать перед переходом на продакшен

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *