Как поменять сервер базы данных Microsoft Dynamics CRM
Добрый день! Уважаемые читатели и гости 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 вызовите окно "Выполнить" и введите:
Чтобы запустить окно редактора реестра Windows.
Далее вам необходимо пройти по пути:
Тут нас будет интересовать два ключа:
- configdb - Описывает к какой базе данных нужно подключаться. Вам нужно изменить имя сервера базы данных в этом ключе (Data Source = DNS-имя сервера БД; Initial Catalog (Исходный каталог) = MSCRM_CONFIG; ;Integrated Security (Встроенная безопасность) = SSPI)
- ServerUrl - это URL службы CRM, здесь также необходимо изменить имя сервера. Если меняете порт, то измените так же значение ключа LocalSdkPort
- LocalSdkPort- Позволяет переопределить порт подключения
На сервере 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'
Еще вариант:
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»)