Решение проблем с базой данных
Управление базой данных (Shdbinst.exe)
Для работы с БД используется консольная утилита Shdbinst.exe, с помощью которой можно выполнять следующий операции:
- создание новой БД
- восстановление БД из архивной копии
- обновление текущей БД
Параметры Shdbinst.exe
Для получения списка поддерживаемых параметров необходимо запустить из командной строки (cmd.exe) утилиту Shdbinst.exe без указания параметров
вызов утилиты - C:\UCS\StoreHouse_5\Shdbinst.exe
Примеры запуска
Создание новой БД
Shdbinst.exe /sSDBSERV /fC:\UCS\StoreHouse_5\Database\SH5DB /i22 /tC:\UCS\StoreHouse_5\Database\SH5DBLog /aAdmin /d"New db" /uAdmin /lC:\UCS\StoreHouse_5\Server\shcrtdb64.dll
Восстановление БД
Shdbinst.exe /sSDBSERV /fC:\UCS\StoreHouse_5\Database\SH5DB /i22 /tC:\UCS\StoreHouse_5\Database\SH5DBLog /aAdmin /d"Restore db" /uAdmin /bC:\UCS\StoreHouse_5\Backup\backup.bkp
Обновление БД
Shdbinst.exe /sSDBSERV /fC:\UCS\StoreHouse_5\Database\SH5DB /i22 /tC:\UCS\StoreHouse_5\Database\SH5DBLog /aAdmin /d"Update db" /uAdmin /bC:\UCS\StoreHouse_5\Backup\backup.bkp /lc:\UCS\StoreHouse_5\Server\shcrtdb64.dll
или
Shdbinst.exe /s127.0.0.1 /fC:\UCS\StoreHouse_5\Database\SH5DB /i1024 /tC:\UCS\StoreHouse_5\Database\SH5DBLog /aAdmin /d"Update db" /uAdmin /lc:\UCS\StoreHouse_5\Server\shcrtdb64.dll
Поддерживаемые параметры
- /s<Имя_Сервера> — имя сервера SH5 для подключения
- /f<Имя_Файла_БД> — имя файла базы данных, которое должно включать в себя полное имя файла базы данных
- /i<Размер_БД> — размер создаваемой БД (Мб)
- /t<Имя_Журнала_Транзакций> — имя файла журнала транзакций, которое должно включать в себя полное имя файла
- /z<Размер_Журнала_Транзакций> — размер создаваемого журнала транзакций (Мб, по умолчанию 10Мб)
- /a<Имя_Администратора> — имя администратора БД
- /p<Пароль_Администратора> — пароль администратора БД (по умолчанию пусто)
- /d<Описание_БД> — описание БД (по умолчанию пусто)
- /b<Имя_файла_резервной_копии> — имя файла резервной копии при восстановления/обновлении БД (может включать полный путь к файлу)
- /l<Путь_к_управляющей_библиотеке> — путь к библиотеке shcrtdb64.dll (используется для создания/обновления БД)
- /u<Имя_пользователя> — имя пользователя (при загруженной БД)
- /v<Пароль_пользователя> — пароль пользователя (при загруженной БД)
Коды ошибок
- 0 Ok
- 1 Неверно задан параметр
- 2 Параметр не найден
- 3 Ошибка инициализации domm.dll
- 4 Ошибка инициализации sdbcli.dll
- 5 Ошибка выполнения процедуры domm.dll
- 6 Ошибка выполнения процедуры sdbcli.dll
- 7 Неизвестная ошибка
- 8 Операция прервана пользователем
Запуск сервера
Для запуска сервера необходимо запустить Sdba и Sdbserv через командную строку.
Запуск Sdba службой
- Имя сервиса (ServiceName): "Sdba" или "Sdba64"
- Отображаемое имя (DisplayName) : "Sdbserv assistent" или "Sdbsrv64 assistent"
- Командная строка: <полный_путь> + параметр " /s".
Пример команды:
C:\UCS\StoreHouse_5\Shdbinst>C:\UCS\StoreHouse_5\Server\Sdba64.exe /s
Запуск Sdbserv службой
- Имя сервиса (ServiceName) и отображаемое имя (DisplayName): "Sdbserv: " + <название_экземпляра_сервера> или "Sdbsrv64: " + <название_экземпляра_сервера>
- Командная строка: полный_путь + параметр " /s" + параметр " /n" + <название_экземпляра_сервера>
Пример: C:\UCS\StoreHouse_5\Shdbinst>c:\UCS\StoreHouse_5\Server\SdbSrv64.exe /s /nSDBSERV
Проверить запустились сервисы или нет можно в процессах (в диспетчере задач)
Параметры в в реестре
Параметры сервера
Общие серверные параметры
Серверные параметры хранятся в ветке HKLM\SOFTWARE\UCS\Sdbserv.2 (корневая ветка)
Параметры, доступные в корневой ветке HKLM\SOFTWARE\UCS\Sdbserv.2:
- Autorun (строковый) - список экземпляров серверов через ";" для автоматического запуска при загрузке Windows (но не сервисами):
- RootDir (строковый) - каталог, из которого запускается сервер и его утилиты
Параметры экземпляра сервера
Параметры конкретного экземпляра сервера хранятся в ветке HKLM\SOFTWARE\UCS\Sdbserv.2\<Имя_экземпляра_сервера>
Параметры, доступные в ветке экземпляра сервера
Общие параметры сервера
- params (DWORD) - битовая маска нижеперечисленных параметров:
- AutoRepair=1 - автоматически восстанавливать БД по журналу транзакций
- DisableAutoValidation= 2 - запретить проверку файла данных при загрузке при обрыве записи в журнал транзакций
- OpenDbReadOnly=4 - файл БД открывается только на чтение (read only)
- PriorityHigh=8 - запускать с высоким приоритетом
- PriorityIdle=16 - запускать с низким приоритетом
- ShowInitErrors=64 - ошибки инициализации будут выведены на экран (для сервиса игнорируется)
- SafeMode=128 - будет загружен только файл БД без прикладных библиотек
Если не выставлен флаг AutoRepair и обнаружена незавершенная транзакция, то
- сервис будет остановлен
- не сервис будет остановлен, если не выставлен флаг ShowInitErrors
- в противном случае на экране будет отображено окно диалога
Параметры протоколирования
- lgprms (DWORD) - битовая маска нижеперечисленных параметров (необязательный параметр):
- Logins=1
- ChannelEvts=2
Прочие параметры
- descr (строковый) - описание назначения сервера, для информации (необязательный параметр)
- dbfile (строковый) - полный путь к файлу БД
- dblog (строковый) - полный путь к журналу транзакций БД
- minwss (DWORD) - размер минимального рабочего набора (min working set) процесса сервера (см. документацию Microsoft) в килобайтах, (необязательный параметр, настоятельно рекомендуется не устанавливать параметр без необходимости)
- maxwss (DWORD) - размер максимального рабочего набора (min working set) процесса сервера (см. документацию Microsoft) в килобайтах, (необязательный параметр, настоятельно рекомендуется не устанавливать параметр без необходимости)
- maxch (DWORD) - максимльный размер резервируемого кэша в байтах (необязательный параметр, рекомендуется использовать значение по умолчанию)
- incch (DWORD) - минимальный размер памяти в байтах для увеличения размера кэша в случае исчерпания ранее выделенной памяти (необязательный параметр, рекомендуется использовать значение по умолчанию)
- logfile (строковый) - полный путь к лог-файлу сервера (может быть пустым)
- libpath (строковый) - путь к каталогу с библиотеками пользователя
- bkppath (строковый) - путь к каталогу хранения резервных копий БД
- bkpprms (DWORD) - опции автоматического резервного копирования; содержат структуру
struct {
BYTE Type; // Тип копирования (0-отключить автоматическое резервное копирование; 1-включить)
BYTE Period; // Периодичность в днях минус 1 [1, 256]
WORD Time; // Время в минутах [00:00, 23:59]
}
- monitor (строковый) - полный путь к библиотеке монитора
- threads (DWORD) - максимальное кол-во потоков для обработки данных (необязательный параметр. Если параметр добавлен, то количество определяется характеристиками компьютера и может принимать значение от 1 до 4 (стандартно). Если характеристики компьютера позволяют запустить больше потоков, можно устанавливать значения больше.)
- stack (DWORD) - размер стека, используемый при создании потока (необязательный параметр; по умолчанию 1 MB)
- tam (строковый) - префикс ThreadAffinityMask (tam0, tam1, ...) (необязательный параметр)
- tip (строковый) - префикс ThreadIdealProcessor (tip0, tip1, ...) (необязательный параметр)
- nplist (DWORD) - битовая маска протоколов (необязательный параметр; 1-локальный, 2-tcp/ip; по умолчанию оба)
- np1p (строковый) - порт tcp/ip
- np1to (строковый) - таймаут tcp/ip
Параметры клиента
Параметры клиента хранятся в корневой ветке HKLM\SOFTWARE\WOW6432Node\UCS\Sh.5 (x64) или HKLM\SOFTWARE\WOW6432Node\UCS\Sh.5 (x86):
- dmalib (строковый) - полный путь к shadm.bpl (обязательный параметр)
- dmlgnt (DWORD) - тип логина (необязательный параметр, по умолчанию 0)
Может принимать значения:
- 0 - отображать диалог логина с выбором типа аутентификации
- 1 - отображать диалог логина только с типом аутентификации через сервер
- 2 - отображать диалог логина только с типом аутентификации через Windows
- 3 - в случае, если в списке серверов прописан только один сервер, производится аутентификация через Windows, при ошибке выдается сообщение об ошибке; если кол-во серверов не равно 1, диалог как при типе логина 0
- 4 - в случае, если в списке серверов прописан только один сервер, производится аутентификация через Windows, при ошибке показывается диалог логина с выбором типа аутентификации; если кол-во серверов не равно 1, диалог как при типе логина 0
- dmsrvs (строковый) - список серверов
- dmsrva (строковый) - список псевдонимов серверов
- dmusrm (DWORD) - макс. хранимое кол-во пользователей (необязательный параметр, по умолчанию 5)
- dmsrvm (DWORD) - макс. хранимое кол-во доп. серверов, введенных вручную (необязательный параметр, по умолчанию 5)
- dmopts (DWORD) - битовая маска нижеперечисленных параметров (необязательный параметр, по умолчанию 0):
- dmRegOptionsEnableExServers=1 - разрешить ручной ввод серверов