logo

[ELMA3] Типичные ошибки запуска сервера и способы их устранения

В этой статье мы рассмотрим часто встречающиеся ошибки и методы их устранения.

1. Ошибка: Ошибка инициализации конфигурации ELMA ---> System.InvalidOperationException: Cannot check database exists ---> System.Data.SqlClient.SqlException: Ошибка входа пользователя "IIS APPPOOL\Elma3-Standart".

Причина: Авторизация на сервере IIS осуществлена под пользователем не имеющим прав администратора.

Решение: Для устранения данной ошибки IIS сервера необходимо зайти в Диспетчер служб IIS (стандартно на сервере в Пуск – Администрирование). В нем на вкладке Пулы приложений у пула "ELMA3-Standart" выбрать в контекстном меню пунк Дополнительные параметры. В нем, в таблице Модель процесса, в поле Удостоверение указать учетную запись LocalSystem либо реальную учетную запись с правами администратора, после чего следует перезапустить веб-сервер.

2. Ошибка: The underlying connection was closed: An expected error occurred on a receive: Unable to read data from the transport connection: Удаленный хост разорвал существующее подключение: Удаленный хост разорвал существующее подключение.

Причина: Сервер ELMA запущен с недостаточными правами доступа.

Решение: В случае, если сервер располагается на базе Cassini, Вам необходимо нажать клавишу с логотипом Windows (флажок Microsoft) + R и ввести следующую команду в диалоговое окно: "services.msc" (без кавычек), после чего появится окно служб Windows. В нем Вы сможете найти строчку Веб-сервер ELMA, кликнуть правой кнопкой мыши и выбрать пункт Свойства, в котором и располагается искомая вкладка Вход в систему. Если же сервер основывается на базе IIS, то в этом случае необходимо так же открыть меню Выполнить (клавиша Windows + R) и ввести команду inetmgr. Откроется окно диспетчера служб IIS, в окне Подключения найдите пункт Пулы приложений, выделите его, откроется список текущего пула, где и должна быть запись о сервере ELMA. Также кликнув правой кнопкой мыши на записи, выберите пункт Дополнительные параметры. Нужная запись находится в строке Удостоверение указажите учетную запись LocalSystem либо реальную учетную запись с правами администратора, после чего следует перезапустить веб-сервер.

3. Ошибка: *System.UnauthorizedAccessException: Отказано в доступе по пути «С:\ELMA3-Express\UserConfig\configuration.packges».

Решение: Удаление файла с расширением .packages из папки UserConfig.

4. Ошибка: Сервер не запущен из-за ошибки.

Причина: Имена в SQL Server Management Studio базы и файле configuration.config не совпадают.

Решение: Изменение названия БД в файле configuration.config.

5. Ошибка: Ошибка создания резервной копии данных.

Причина:Недостаточно места на диске.

Решение: Освободить место для корректного создания бекапа базы.

6. Ошибка: EleWise.ELMA.Runtime.Db.DbStructureException: Ошибка обновления структуры БД ---> System.Data.DataException: Не удалось выполнить запрос DROP INDEX UK_principal_name ON sysdiagrams ---> System.Data.SqlClient.SqlException: Явная инструкция DROP INDEX недопустима в индексе "sysdiagrams.UK_principal_name". Он используется для принудительного применения ограничения UNIQUE KEY.

Причина: В SQL Server Management Studio, в разделе Системные таблицы не должно быть таблиц.

Решение: Остановите сервер ELMA и откройте SQL Server Management Studio, в списке баз данных выберите нужную БД и разверните список таблиц. В разделе Системные таблицы не должно быть таблиц. Если они там есть, удалите их. Запустите сервер ELMA.

7. Ошибка: Ошибка из-за наличия активных подключений к БД.

Причина: После восстановления базы из бекапа на сервере со временем отличным от предыдущего может остаться информация об активном подключении.

Решение: Создание резервной копии и выполнение запроса в БД. Текст запроса: Delete from DB_ACTIVECONNECTIONS.

8. Ошибка: EleWise.ELMA.Runtime.Db.DbStructureException: Ошибка обновления структуры БД ---> NHibernate.TransactionException: Commit failed with SQL exception ---> FirebirdSql.Data.FirebirdClient.FbException: unsuccessful metadata update

object INDEX is in use ---> FirebirdSql.Data.Common.IscException: unsuccessful metadata update

Причина: Ошибка обновления.

Решение: Сделайте резервное копирование базы и восстановите ее. (Для корректной работы системы на FireBird данную операцию необходимо производить с периодичностью раз в две недели).

9. Ошибка: *EleWise.ELMA.Runtime.Exceptions.ConfigurationInitializeException: Ошибка инициализации конфигурации ELMA ---> System.InvalidOperationException: Не удалось подключиться к базе данных ---> FirebirdSql.Data.FirebirdClient.FbException: Unable to complete network request to host "127.0.0.1". ---> FirebirdSql.Data.Common.IscException: Unable to complete network request to host "127.0.0.1".

Причина: Ошибка в файле configuration.config в строке <add name="MainDB" connectionString="data source=127.0.0.1;initial catalog={CONFIGDIR}\base.fdb;user id=sysdba;password=masterkey;character set=UNICODE_FSS;dialect=3;server type=0" />.

Решение: Убедиться, что в строке<add name="MainDB" connectionString="data source=127.0.0.1;initial catalog={CONFIGDIR}\base.fdb;user id=sysdba;password=masterkey;character set=UNICODE_FSS;dialect=3;server type=0" /> отсутствуют опечатки, соблюден регистр символов.

10. Ошибка: *EleWise.ELMA.Runtime.Exceptions.ConfigurationInitializeException: Ошибка инициализации конфигурации ELMA ---> System.InvalidOperationException: Не удалось подключиться к базе данных ---> System.Data.SqlClient.SqlException: Не удается открыть базу данных "ELMA", запрашиваемую именем входа. Не удалось выполнить вход.
Ошибка входа пользователя "NT AUTHORITY\система".

Причина: Авторизация на сервере Cassini осуществлена под пользователем не имеющим прав администратора.

Решение: Необходимо запустить сервер Elma от имени учетной записи, обладающей правами администратора в Windows. Для этого зайдите в Панель управления – Администрирование – Службы, найдите там Веб-сервер Elma, щелкните по нему правой кнопкой мыши, выберите Свойства, в открывшемся окне перейдите на вкладку Вход в систему, установите флажок С учетной записью и введите данные учетной записи, обладающей правами администратора.

Дополнение: Ошибка сервера MS SQL 2008 и выше Login failed for user ’NT AUTHORITY\система’. Причина: не удалось открыть явно указанную базу данных "ELMA". [КЛИЕНТ: <local machine>]. Ошибка: 18456, серьезность: 14, состояние: 38.

Причина: Авторизация верная, запуск происходит с правами администратора, но база данных недоступна (или нет разрешения).

Решение: Группе NT AUTHORITY\система необходимо добавить роль sysadmin на SQL сервере. Для этого зайдите Microsoft SQL Server Management Studio, раздел Безопасность – Имена входа и выберите свойства группы NT AUTHORITY\система. В меню Роли сервера установите флажок напротив роли sysadmin.

11. Ошибка: *EleWise.ELMA.Runtime.Exceptions.ConfigurationInitializeException: Ошибка инициализации конфигурации ELMA ---> System.InvalidOperationException: Не удалось подключиться к базе данных ---> System.Data.SqlClient.SqlException: Разрешение CREATE DATABASE запрещено в базе данных "master".
Не удалось присоединить файл "F:\ELMA3-Standart\UserConfig\ELMA3.mdf" в качестве базы данных "ELMA3".

Причина: Ошибка в файле configuration.config в строке AttachDbFilename={CONFIGDIR}\ELMA3.mdf;

Решение: Удалить строку "AttachDbFilename={CONFIGDIR}\ELMA3.mdf" в конфигурационном файле configuration.config. После внесенных изменений файл необходимо сохранить и перезапустить веб-сервер.

12. Ошибка: При работе с веб-частью отображается всплывающее окно с ошибкой Не пройдена проверка предусловий запуска.

Соответственно, при попытке авторизации в Дизайнере возникает ошибка.

Причина: В окне ошибки виден пустой параметр – имя сервера.

Решение: подключиться к серверу MSSQL от имени администратора и выполнить правильный SQL-запрос:

EXEC sp_dropserver N'elma-local-loop'
GO

EXEC sp_addlinkedserver N'elma-local-loop', N' ', N'SQLNCLI', N'localhost\SQLSERVER2014'
GO

EXEC sp_serveroption [elma-local-loop], N'remote proc transaction promotion', 'false'
EXEC sp_serveroption [elma-local-loop], N'rpc out', 'true'
GO

где localhost\SQLSERVER2014 – имя сервера базы данных.

Чтобы убедиться, что ошибка исправлена, нужно выполнить запрос:

select * from sys.servers where lower([name]) = 'elma-local-loop'

Результат будет выглядеть следующим образом:

13. Ошибка: Ошибка Инициализации конфигурации ELMA: Версия БД <название версии> не подходит по минимальным требованиям (предоставлена версия – <используемая версия БД>, требуется как минимум <версия БД, необходимая для корректной работы системы ELMA>

Причина: версия используемой базы данных не подходит по минимальным системным требованиям для используемой редакции системы ELMA.

Решение: необходимо обновить версию используемой базы данных до соответствующей минимальным системным требованиям для используемой редакции системы ELMA.

14. Ошибка: DbStructure files with the same GUID are found <uid>: <модуль1>;<модуль2> – в модулях системы содержатся xml-преобразования базы данных с одинаковыми uid.

Причина: в указанных модулях системы (модуль1, модуль2) содержатся xml-преобразования базы данных с одинаковыми uid.

Решение: изменить дублирующийся uid в одном из модулей.

15. Ошибка: Npgsql.NpgsqlException: No password has been provided but the backend requires one (in MD5).

Решение: Если отсутствуют права суперпользователя по умолчанию, если они не были указаны при установке, укажите их в файле configuration.config, который располагается в папке конфигурации ELMA, по умолчанию ../<Общая папка с файлами системы ELMA>/UserConfig:

  • в секции main добавьте ключи sysUser и sysPassword со значениями для пользователя – владельца базы данных;
  • для этого случая желательно отключить автоматическое резервное копирование данных, добавив ключ backupEnabled со значением false.

Пример настроек представлен на рисунке.

16. Иногда при работе в системе могут возникнуть ошибки из-за прав, которые настраиваются в IIS.

Например, если пул ELMA4 в IIS запускается под ApplicationPoolIdentity, то при импорте пакетов, требующем перезапуска сервера, возникает следующая ошибка:

"ERROR 2021-03-04 16:02:13,055 [5] EleWise.ELMA.Logging.Logger - Во время выполнения автоматического импорта произошла ошибка: В процессе импорта произошла ошибка: Не удалось проверить статус запуска сайта 'ELMA-Enterprise-4_0_7' в IIS. Скорее всего, у пользователя, под которым запущен пул приложений IIS, отсутствуют необходимые привилегии".

Оригинальный текст ошибки:
"Имя файла: redirection.config
Ошибка: Не удалось прочитать файл конфигурации из-за отсутствия необходимых разрешений".

При этом группе IIS_IUSRS выданы полные права на папку с системой и C:\Windows\Temp\ELMA.

В этом случае проблема возникает из-за отсутствия прав. Решение проблемы — это вопрос администрирования.

ApplicationPoolIdentity — учётная запись с минимальными правами. То, что требует ELMA4 (управление сайтом, чтение данных пула и др.), эта учётная запись по умолчанию не обеспечивает.

В этом случае варианта решения два:

1. Если политика безопасности позволяет, изменить удостоверение пула приложений.

2. Выдать права для работы под ApplicationPoolIdentity или той учётной записью, под которой работает администратор. Для IIS_IUSRS выдать права на %SystemRoot%\System32\inetsrv\config.

17. Ошибка: *EleWise.ELMA.Runtime.Db.DbStructureException: Ошибка обновления структуры БД ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-00054: ресурс занят и задано его получение с параметром NOWAIT, либо истекло время ожидания.

Решение:

1. Убедиться, что в схеме нет блокировок.

2. Увеличить таймауты запросов в базу. Для этого в файле ~\Web\settings.config:

  • изменить значение value для ключа <add key=DbTransformCommandTimeout” value=“3600” />, например, выставить value=“7200”;
  • изменить значение value для ключа <add key=“Application.DbCommandTimeout” value=“30” />, например, выставить значение value=“120”.

Особенности настройки nginx

Если используется веб-сервер nginx, могут возникнуть следующие ошибки:

  1. Ошибки, связанные с обработкой заголовка __RequestVerificationToken в POST-запросе.

Решение: в файле конфигурации веб-сервера nginx в части server добавьте строку underscores_in_headers on; или ignore_invalid_headers off;

  1. Ошибки, связанные с некорректными редиректами.

Решение: в файле конфигурации веб-сервера nginx параметр proxy_set_header укажите в формате proxy_set_header Host $host:$server_port;