Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vrunner session kill - Ошибка при получении значения из базы данных. Возможной причиной является отсутствие установленного Microsoft SQL Server Native Client #622

Open
Lelushka opened this issue Jul 8, 2024 · 7 comments
Milestone

Comments

@Lelushka
Copy link

Lelushka commented Jul 8, 2024

Добрый день, на новом релизе 2.2.2 стабильная ошибка c командой session kill

10:35:53 C:\jenkins\workspace\UT_KG_Refresh-RefreshDB->vrunner session kill --with-nolock --ras "сервер" --db "база" --db-user "Администратор" --db-pwd "****" --uccode "CICD" --debuglog
10:35:53 vanessa-runner v2.2.2
10:35:54 ИНФОРМАЦИЯ - Отключаю существующие сеансы
10:35:54 ИНФОРМАЦИЯ - Получаю список кластеров
10:35:54 ИНФОРМАЦИЯ - Получаю список баз кластера
10:35:56 ИНФОРМАЦИЯ - Пауза перед отключением соединений
10:36:06 ИНФОРМАЦИЯ - Получаю список рабочих процессов...
10:36:06 ИНФОРМАЦИЯ - Получаю список соединений рабочего процесса...
10:36:06 ИНФОРМАЦИЯ - Получаю список соединений рабочего процесса...
10:36:07 ИНФОРМАЦИЯ - Попытка удаления сеансов №1 неудачна. Текст ошибки:
10:36:07 Сообщение от процесса
10:36:07 код:-1 процесс: Ошибка при получении значения из базы данных. Возможной причиной является отсутствие установленного Microsoft SQL Server Native Client.
10:36:07 КРИТИЧНАЯОШИБКА - {Модуль C:\Program Files\OneScript\lib\vanessa-runner\src\Классы\КомандаУправлениеСеансами.os / Ошибка в строке: 303 / Попытка удаления сеансов не удалась. Текст ошибки:
10:36:07 Сообщение от процесса
10:36:07 код:-1 процесс: Ошибка при получении значения из базы данных. Возможной причиной является отсутствие установленного Microsoft SQL Server Native Client.}

Откатываю на 1.11.11 - все хорошо, работает штатно.

@maraty2go
Copy link

maraty2go commented Jul 24, 2024

У меня на одном из серверов аналогичная ошибка периодически воспроизводится на версии vanessa-runner v1.11.11
Иногда решает повторный перезапуск джобы, иногда перезапуск службы 1С с чисткой сеансового кэша. В некоторых случаях ничего не помогает. Платформа 8.3.25.1257. На других стендах ошибка не воспроизводится при аналогичном окружении.
Строка запуска
vrunner session kill --ras server:1545 --cluster-admin "" --cluster-pwd "" --db infobase --lockendclear --lockmessage "Происходит обновление 1С на новый релиз!" --uccode "74" --db-user **** --db-pwd **** --v8version "8.3.25.1257" --debuglogfile log.txt

vanessa-runner v1.11.11
ИНФОРМАЦИЯ - Получаю список кластеров
ИНФОРМАЦИЯ - Получаю список баз кластера
ИНФОРМАЦИЯ - Сеансы запрещены
ИНФОРМАЦИЯ - Отключаю существующие сеансы
ИНФОРМАЦИЯ - Отключаю сеанс: 1 [DefUser] (BackgroundJob)
ИНФОРМАЦИЯ - Отключаю сеанс: 4 [DefUser] (BackgroundJob)
ИНФОРМАЦИЯ - Отключаю сеанс: 2 [DefUser] (BackgroundJob)
ИНФОРМАЦИЯ - Отключаю сеанс: 3 [DefUser] (BackgroundJob)
ИНФОРМАЦИЯ - Пауза перед отключением соединений
ИНФОРМАЦИЯ - Получаю список рабочих процессов...
ИНФОРМАЦИЯ - Получаю список соединений рабочего процесса...
КРИТИЧНАЯОШИБКА - {Модуль C:\Program Files\OneScript\lib\vanessa-runner\src\Классы\КомандаУправлениеСеансами.os / Ошибка в строке: 294 / Попытка удаления сеансов не удалась. Текст ошибки:
Сообщение от процесса
код:-1 процесс: Ошибка при получении значения из базы данных. Возможной причиной является отсутствие установленного Microsoft SQL Server Native Client.}

ps:
на тестовом стенде обновил oscript до 1.9.1.7, vrunner до 2.2.22 (через opm)
платформа 8.3.25.1257. Ошибка так же стала воспроизводиться на ранее работавших скриптах.

@maraty2go
Copy link

maraty2go commented Jul 24, 2024

Вариант исправления
В классе vanessa-runner КомандаУправлениеСеансами.os добавить условие РабочийПроцесс["reserve"] = "no"

`Процедура ОтключитьСоединенияСРабочимиПроцессами()

Процессы = ПолучитьСписокРабочихПроцессов();

Для Каждого РабочийПроцесс Из Процессы Цикл
Если РабочийПроцесс["running"] = "yes"
И РабочийПроцесс["reserve"] = "no" Тогда

  СписокСоединений = ПолучитьСоединенияРабочегоПроцесса(РабочийПроцесс);
  Для Каждого Соединение Из СписокСоединений Цикл

    // Попытка
      РазорватьСоединениеСПроцессом(РабочийПроцесс, Соединение);
    // Исключение
    //   Лог.Ошибка(ОписаниеОшибки());
    // КонецПопытки;

  КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецПроцедуры`

Мы получаем список рабочих процессов, а потом для каждого процесса отключаем соединения в цикле.
В моем случае ошибка возникает, когда мы получаем процесс сервера лицензирования, а он не работает и не настраивался на работу с СУБД.
Такой вариант работает, но нужно подумать, возможно по каким то другим критериям отсеивать процесс сервера лицензирования или на второй сервер установить все необходимые компоненты.

@240596448
Copy link

240596448 commented Aug 22, 2024

По-моему нормальное решение.
reserve - само то (спасибо за идею).

PS: Устанавливать на сервер лицензировая клиент - это какая-то крайность.

UPD: беру слова обратно.
Процесс на сервере лицензирования вполне себе РабочийПроцесс["reserve"] = "no" и ни чем не отличается от других процессов ;(

@so1arin
Copy link

so1arin commented Oct 16, 2024

Решение не помогает. Есть ли еще варианты обхода проблемы?

@maraty2go
Copy link

Решение не помогает. Есть ли еще варианты обхода проблемы?

Если используется как у меня сервер лицензирования, то можно по другому
вместо предыдущей правки
"И РабочийПроцесс["reserve"] = "no""
исключаем непосредственно сервер по имени хоста
"И НЕ РабочийПроцесс["host"] = "Lic01"
Как оказалось, сервер лицензирования не всегда в резерве. Других отличительных полей там нет, сравнивал.
Это не универсальное решение, а скорее решение частного случая

@240596448
Copy link

РабочийПроцесс["host"] = "Lic01"

Я, например, у себя остановился именно на этом варианте.
Вынести имя сервера лицензий в evn да и нормально было бы.

@Segate-ekb
Copy link
Collaborator

Сделал ПР.
Отказался от получения соединений по РП. переделал на получение соединений по базе, без детализации по РП.
Соответственно и закрываются соединения так же. Соединений на сервере лицензирования не будет, потому не будет и ошибки.

@artbear artbear added this to the 3.х milestone Dec 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants