null

Установка UCEMS на MS SQL Server 2008 Express

В связи с тем, что кроме всего прочего я также являюсь и ведущим преподавателем по курсу Unified Communication компании Huawei, было необходимо установить некоторый набор программного обеспечения, относящегося к этому курсу. Одной из частей этого обеспечения является Unified Communication Elements Management System (UCEMS), предназначенный для централизованного управления IP АТС (SoftCo) и устройствами интегрированного доступа (IAD) производства Huawei.

Согласно полученной от Huawei информации для его установки необходим персональный компьютер под управлением Windows 2003 Server и установленный SQL Server 2003.

Так как:

  • ставить несколько физических серверов (UCEMS не единственный продукт Huawei) очень не хотелось, зато имелся сервер с достаточным количеством ресурсов для запуска нескольких виртуальных систем в VirtualBox;
  • уже существующих лицензий на Windows 2003 у нас нет, а купить лицензию на что-то более старое чем Windows 2008 немного затруднительно;
  • очень не хотелось приобретать еще и лицензию на SQL Server;

было принято волевое решение попробовать поднять UCEMS в виртуалке под Windows 2008 и SQL Server 2008 Express. Сказано - сделано.

Поставили Windows 2008, установили SQL Server 2008 Express, задали имя экземпляра ucems, даже не забыли указать возможность двойной аутентификации и задали пароль для sa.

Запускаем инсталлятор UCEMS и доходим до настройки параметров соединения с базой. Выясняем, что UCEMS обращаться к СУБД через TCP. Разрешаем в SQL Server соединения через TCP и прибиваем порт 1433, после чего перезапускаем сервер. Проверяем соединение из установщика UCEMS. Установщик ругается на неправильный "DB server name", хотя там в явном виде указано ucems. После нескольких попыток исправить это поле становится очевидным, что дело не в нём. Попытки использования поиска по проблемам связанным данным сегментом продуктов Huawei пока в лучшем случае дают несколько ссылок на китайском.

Хорошо. Откатывает snapshot виртуалки на снимок, сделанный до установки SQL Server, и устанавливаем SQL Server еще раз, но уже в полной установке с временной лицензией. Опять пытаемся установить UCEMS, опять с таким же результатом. Задумался. С одной стороны - SQL Server при разрешении TCP почему-то по умолчанию пытается привязаться к какому-то динамическому порту, и статический 1433 приходилось указывать ему принудительно, с другой стороны установленный в соседней виртуалке другой комплект программ использует имя экземпляра в SQL Server по умолчанию. Пробуем переустановить SQL Server, выбираем имя экземпляра по умолчанию, разрешаем TCP - в этот раз по умолчанию берётся порт 1433. Начинаем ставить UCEMS - проверка соединения с базой успешно проходить.

Опять откатывает snapshot туда же, переустанавливаем SQL Server, но в этот раз всё таки Express edition и используем имя экземпляра по умолчанию. Начинаем ставить UCEMS - возвращаемся к старой картине маслом. Правда при установке Express edition было выбрано немного другое имя экземпляра - SQLExpress, тогда как в нормальной полной установке это MSSQLSERVER.

Еще раз откатываем snapshot, опять ставим SQL Server Express, но в этот раз выбираем имя экземпляра MSSQLSERVER. При разрешении TCP он сам предлагает повеситься на порт 1433, а после запуска инсталлятора UCEMS успешно проходит проверку соединения. Оказывается UCEMS жёстко привязан к имени экземпляра, только сказать у него это немного не получалось. Всё таки плохо пытаться делать нестандартные конфигурации не зная предметной области.

UCEMS установился, запускаем его клиента, подгружаем выданные временные лицензии, меняем пароль и... что-то не работает. Запускаем UCEMS System Monitor и выясняем что не запущен его главный сервис UCEMS Process. Пытаемся перезапустить - работа сервиса завершена с ошибкой. Что именно случилось - не понятно. Глядим в журнал сообщений Windows, обнаруживаем там запись:

Login failed for user 'UCEMSuser'. Reason: Failed to open the explicitly specified database. [CLIENT: 192.168.xxx.xxx]

Сообщение от SQL Server откровенно порадовало своей информативностью. Почему не получилось? К какой базе пытался обратиться пользователь?

Находим логи SQL Server, обнаруживаем что к данной проблеме относится еще одна строчка:

Error: 18456, Severity: 14, State: 38.

Повторное гугление вопроса подсказывает, что это является попыткой обратиться к базе, к которой нет доступа. Достаём SQL Server Management Studio, смотрим в сервер. Базы созданы в количестве семи штук. Находим пользователя UCEMSuser, смотрим в чего mapping, обнаруживаем, что действительно данному пользователю не даны права на доступ к базам IDAMSMit и DeviceDB. Даём ему права public и db_owner, на всякий случай всё перезапускаем, и...

Всё заработало!

Почему получилось так, что ПО само создало и базу и пользователя, но не предоставило ему доступ не очень понятно. Исходя из того, что инженеры Huawei не сталкивались с подобными проблемами, вполне допускаю действительно имеющуюся где-то несовместимость либо с SQL Server, либо еще где-то, но остаётся фактом. UCEMS можно запустить на Windows 2008 и SQL Server 2008 Express, загнав всё это хозяйство в виртуалку, но  понадобится немного поработать напильником.