Введение

Ниже будут описаны типичные ситуации по принципу "проблема-причина-решение".

Включение логирования

Чтобы включить логирование StoreHouse 5, 

  1. Откройте редактор реестра и перейдите в ветку HKLM\Software\USC\sdbserv.2\Ключ_сервера
  2. Создайте параметр DWORD uplt (максимально допустимое время исполнения процедур в мс) со значением, например 100.
  3. Сохраните изменения и перезапустите сервер StoreHouse 5.

Лог выглядит так:

11.10.2019 14:30:10- PROCTIME DebugProc time=1.050 sec, conn_id=11, status=

Как читать лог: имя процедуры DebugProc, время исполнения, включая время коммита или отката, 1.05 сек, идентификатор соединения 11, процедура выполнена успешно; сигнатура для поиска - PROCTIME.

Ошибка передачи данных серверу Win32 = 10054

Во время простоя может возникать Ошибка передачи данных серверу Win32 = 10054: Удаленный хост принудительно разорвал существующее соединение.

Причина

Пока не установлена. Есть обходное решение. Предполагается, что клиент уходит в спящий режим и соединение разрывается.

Обходное решение №1

Включите опцию запрета спящего режима в настройках сервера. По умолчанию настройка отключена. Для этого:

  1. Откройте редактор реестра
  2. Перейдите в ветку HKLM\Software\USC\sdbserv.2\Ключ_сервера
  3. В параметре params укажите число 512 в десятеричной системе или 200 в шестнадцатиричиной. Если значение было 0, то должно стать 512. Если было больше 0, то на +512 больше.
  4. Сохраните изменения и перезапустите сервер.

Обходное решение №2

Включить режим Keep-alive для сервера. Сделать это можно, добавив в ветку реестра сервера два параметра:

  • np1kat (DWORD) — время в мс при пассивном состоянии канала до посылки первого пакета keepalive. По умолчанию 2 часа. Присваивайте значение не более 300000, десятичное,
  • np1kai (DWORD) — интервал в мс посылки сообщений keepalive, если подтверждение не получено. По умолчанию 1 секунда. Присваивайте значение, например, 10000.

Если включить настройку Log network events, в протоколе сервера увидите для каждого нового TCP-соединения строку типа Keep-alive enabled; prot=1; ip=такой-то; time=300000; interval=10000 или сообщение об ошибке.

Недопустимое имя объекта

Во время настройки синхронизации с R-keeper 7 через QUSH может возникать такая ошибка:

Причина

Проблема возникает из-за отсутствия данных в таблице SQL. Данные не передаются из RK7 в SQL из-за подключения к SQL не по IP, а по имени:

r_keeper QUSH

При этом что и в менеджерской станции и в QUSH проверка настроек не будет выдавать ошибки. 

Решение

Перенастроить MSSQL на подключение по IP-адресу, прописав номера портов. Для этого нужно в настройках протокола TCP/IP в MSSQL указать порты у нужных IP. Для этого:

  1. Перейдите в диспетчер конфигурации SQL, он находится в меню Пуск:
  2. Далее – в раздел Протоколы SQL
  3. Зайдите в настройки протокола TCP/IP
  4. Выбрать раздел Адреса и указать порт у нужных IP-адресов. По умолчанию это порт 1433, но вы можете указывать любой подходящий. Обязательно укажите порт у 127.0.0.1 или у внутреннего IP, если сервер с клиентом установлены не на одном компьютере
  5. Нажмите ОК. Теперь осталось перезапустить службу MSSQL и изменения применятся. Перезапустить её можно через Диспетчер конфигурации или через Службы Windows
  6. Теперь вы можете подключаться к БД по IP-адресу. Проверьте это через SQL Server Management Studio. Если подключается - значит вы всё сделали правильно. 
  7. Перенастраиваете синхронизацию с SQL в RK7 и QUSH на IP. Проблема решена. 

Используется не онлайн-лицензия

При замене базы, вы сможете увидеть следующую ошибку лицензирования

Используется не онлайн-лицензия

Чтобы исправить ошибку, откройте утилиту Sdbman.exe. Перейдите в Обслуживание > Исполнить процедуру

В появившемся окне необходимо введите:

Процедура: LimN
Библиотека: Shsrv64.dll   

и нажмите кнопку Исполнить. После этого лицензия должна работать.