MSSQL
Установка MS SQL
Посредством eepm
(будет установлена 15 версия, она же 2019)
epm play -y mssql-{server,tools}
На Альт Сервер 8
Установить необходимое ПО: apt-get install -y eepm wget lftp unixODBC
Собственно сервер
- С https://packages.microsoft.com/rhel/7/mssql-server-2019/ скачать пакет mssql-server-15.0.2000.5-5.x86_64.rpm или более новый.
- Установить с пересборкой под Альт: epmi -y --repack `ls mssql-server-1*`
- Создать пользователя: useradd mssql
- Создать рабочий каталог для сервера: install -o mssql -g mssql -d /var/opt/mssql
- Прописать автоматический запуск службы: systemctl enable mssql-server
- Пройти мастер первоначального конфигурирования: /opt/mssql/bin/mssql-conf setup
- SQL Server будет запущен.
- Проверить подключение: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P'Pa$$word' -Q 'sp_databases'
- Можно делать это с другой машины и из другой программы — например, из Management Studio.
- Если SQL Server отвергает все попытки подключения с ошибкой "Error code 0x2746"
- Доустановить библиотеку и скорректировать загрузку:
apt-get install libssl10 systemctl stop mssql-server systemctl edit mssql-server
- В открывшемся редакторе ввести и сохранить следующее:
[Service] Environment="LD_LIBRARY_PATH=/opt/mssql/lib"
- Создать ссылки на библиотеки, которые будет использовать SQL Server, и запустить его:
ln -s /lib64/libssl.so.1.0.2r /opt/mssql/lib/libssl.so ln -s /lib64/libcrypto.so.1.0.2r /opt/mssql/lib/libcrypto.so systemctl start mssql-server
- Доустановить библиотеку и скорректировать загрузку:
Полнотекстовый поиск
После установки основного пакета MS SQL, но до пункта настройки сервера, стóит аналогичным образом установить пакет msqsql-server-fts:
- Скачать последнюю версию:
$ wget $(lftp -e 'ls;quit' https://packages.microsoft.com/sles/15/mssql-server-preview/Packages/m | \ awk '/mssql-server-fts/{a=$5}END{print "https://packages.microsoft.com/sles/15/mssql-server-preview/Packages/m" a}')
- Установить её с пересборкой: epmi --repack `ls -1 mssql-server-fts*`
Драйвер ODBC
Требуется как для работы sqlcmd из mssql-tools, так и для других приложений. Ставится в месте установки приложений.
- Скачать свежую сборку msodbcsql для SUSE (версия для rhel работает, но имеет проблемы с зависимостями в ALT):
wget $(lftp -e 'ls;quit' https://packages.microsoft.com/sles/15/prod/Packages/m | \ awk '/msodbcsql/{a=$5}END{print "https://packages.microsoft.com/sles/15/prod/Packages/m" a}')
- Установить её с пересборкой: epm install --repack `ls -1 msodbcsql*`
- Прописать символические ссылки на libssl и libcrypto (нужные имена файлов видно в выводе пересборки):
for N in ssl crypto; do ln -s /lib64/lib$N.so.10 /lib64/lib$N.so.1.0.0; done
- (при изменении способа загрузки библиотек, вероятно, потребуется выполнить ldconfig)
- Прописать как драйвер ODBC: odbcinst -i -d -f /opt/microsoft/msodbcsql18/etc/odbcinst.ini &>/dev/null
- Проверка установки: # odbcinst -q -d
[PostgreSQL] [MySQL] [ODBC Driver 18 for SQL Server]
mssql-tools
Уже должны быть установлены unixODBC и сопутствующие установке msodbcsql пакеты.
- Скачать свежую сборку для SUSE:
wget $(lftp -e 'ls;quit' https://packages.microsoft.com/sles/15/prod/Packages/m | \ awk '/mssql-tools/{a=$5}END{print "https://packages.microsoft.com/sles/15/prod/Packages/m" a}')
- Установить её с перепаковкой: epmi -y --repack `ls -1 mssql-tools1*`
На Альт p11
...слишком новая libldap, с которой mssql-2022 работать отказывается, релиз 2025-го в доступе не обнаружен, а его превьюшка пересобирается, ставится, но при первоначальной настройке...
| выдаёт следующее. |
|---|
Настраивается SQL Server...
This program has encountered a fatal error and cannot continue running at Tue Sep 30 01:01:51 2025
The following diagnostic information is available:
Reason: 0x00000004
Message: ASSERT: Expression=(NT_SUCCESS(status)) File=LibOS\Windows\Kernel\DRtl\sqlpalstubs.cpp Line=886
Stack Trace:
file://package6/windows/system32/sqlpal.dll+0x000000000000A5F2
file://package6/windows/system32/sqlpal.dll+0x0000000000009925
file://package6/windows/system32/sqlpal.dll+0x0000000000005584
file://package6/windows/system32/sqlpal.dll+0x0000000000005412
file://package6/windows/system32/sqlpal.dll+0x00000000000E85B4
file://package6/windows/system32/sqlpal.dll+0x00000000000AA761
file://package6/windows/system32/sqlpal.dll+0x00000000000AAE14
file://package6/windows/system32/sqlpal.dll+0x00000000000AA35A
file://package6/windows/system32/sqlpal.dll+0x00000000000AC780
file://package6/windows/system32/sqlpal.dll+0x0000000000006FDC
file://package6/windows/system32/sqlpal.dll+0x00000000000065CE
file://package6/windows/system32/sqlpal.dll+0x0000000000006A69
file://package6/windows/system32/sqlpal.dll+0x0000000000121971
Process: 11103 - sqlservr
Thread: 11109 (application thread 0x8)
Instance Id: 134469de-268c-4713-ad99-7b90ab61d017
Crash Id: c8c7b308-36e6-4a5f-af38-e4d6ae6c333d
Build stamp: e266b19e8c32885ac1d0e974fa41c964c0b27ba131ee6c57cad539c137992c76
Distribution: ALT Container
Processors: 2
Total Memory: 270435598336 bytes
Timestamp: Tue Sep 30 01:01:51 2025
Last errno: 22
Last errno text: Недопустимый аргумент
Capturing a dump of 11103
FAILED to capture a dump. Details in paldumper log.
Executing: /opt/mssql/bin/handle-crash.sh with parameters
handle-crash.sh
/opt/mssql/bin/sqlservr
11103
/opt/mssql/bin
/var/opt/mssql/log/
134469de-268c-4713-ad99-7b90ab61d017
c8c7b308-36e6-4a5f-af38-e4d6ae6c333d
ALT Container
Capturing core dump and information to /var/opt/mssql/log...
Capture info: Kernel Version
Capture info: OS release
Capture info: System memory information
Capture info: Command line
Capture info: Start Time
Capture info: Process limits
Capture info: Thread list
Capture info: Processor topology
Capture info: Process mounts
Capture info: Process statistics
Capture info: Process status
Capture info: Process memory maps
Capture info: Process memory maps (detailed)
Capture info: Core Dump filter
Capture info: Process CGroup information
cat: /sys/fs/cgroup/user.slice/user-0.slice/session-48168.scope/memory.reclaim: Отказано в доступе
Capture info: Process scheduler information
Capture info: Process list
Capture info: Process handle information
Capture info: Process environment variables
/opt/mssql/bin/system-info-functions.sh: строка 346: hash: dpkg: не найден
dmesg: чтение буфера ядра завершилось неудачно: Операция не позволена
Hint: You are currently not seeing messages from other users and the system.
Users in groups 'adm', 'systemd-journal', 'wheel' can see all messages.
Pass -q to turn off this notice.
No journal files were opened due to insufficient permissions.
Hint: You are currently not seeing messages from other users and the system.
Users in groups 'adm', 'systemd-journal', 'wheel' can see all messages.
Pass -q to turn off this notice.
No journal files were opened due to insufficient permissions.
Capture info: Current application configuration
Вт 30 сен 2025 01:01:52 UTC Capturing program information
Вт 30 сен 2025 01:01:52 UTC Attempting to capture a dump with paldumper for pid 11103
WARNING: Capture attempt failure detected
Attempting to capture a filtered dump with paldumper for pid 11103
WARNING: Attempt to capture dump failed. Reference /var/opt/mssql/log/core.sqlservr.11103.temp/log/paldumper-debug.log for details
Вт 30 сен 2025 01:01:52 UTC Attempting to capture a dump with gdb
Вт 30 сен 2025 01:01:52 UTC Captured a dump with gdb: /var/opt/mssql/log/core.sqlservr.11103.temp/core.sqlservr.11103
Вт 30 сен 2025 01:01:52 UTC Capturing program binaries
/usr/bin/find: ‘/usr/lib/chkpwd’: Отказано в доступе
/usr/bin/find: ‘/usr/lib/openssh’: Отказано в доступе
/usr/bin/find: ‘/usr/libexec/ping’: Отказано в доступе
Вт 30 сен 2025 01:01:52 UTC Compressing the dump files
Core dump and information are being compressed (pbzip2) in
the background. When complete, they can be found in the following location:
/var/opt/mssql/log/core.sqlservr.09_30_2025_01_01_51.11103.tbz2
Произошел сбой при начальной установке Microsoft SQL Server. Ознакомьтесь с ERRORLOG.
в /var/opt/mssql/log для получения дополнительных сведений.
|
И хотя после этого запускается, однако некоторое время спустя падает — так что в ожидании релиза довольствуемся p10.
На Альт p10
(будет установлена 16 версия, она же 2022)
Подготовка
- Установить недостающее: # apt-get update && apt-get install -y eepm libatomic1 lftp wget unixODBC
- Освежить систему: # epm -y full-upgrade
Установка
Чтоб не прыгать между репозиториями, лучше взять всё из SLES, поскольку не все пакеты из RHEL «одинаково полезли».
Можно сделать всё одним скриптом, при успешном завершении которого запустится первоначальная настройка, а за ней и сам сервис:
| mssql-install |
|---|
#!/bin/sh
apt-get update && apt-get install -y eepm libatomic1 lftp wget unixODBC
epm -y full-upgrade
useradd mssql
install -o mssql -g mssql -d /var/opt/mssql
for RPM in mssql-{server-{1,fts},tools} msodbcsql; do
case $RPM in
*-server-*)
DIR=${RPM%-*}-2022;;
*) DIR=prod
esac
URL="https://packages.microsoft.com/sles/15/$DIR/Packages/m"
wget $URL/`lftp -e 'ls;quit' $URL | awk '/'$RPM'/{a=$5}END{print a}'` &&
epmi -y --repack `ls -1 ${RPM}*`
done
systemctl enable mssql-server
sed -i 's|PATH=.*|&:/opt/mssql-tools18/bin|' ~/.bashrc
sed -i 's|su $whitelistArg|su|' /opt/mssql/lib/mssql-conf/invokesqlservr.sh
odbcinst -i -d -f /opt/microsoft/msodbcsql18/etc/odbcinst.ini &>/dev/null
odbcinst -q -d # проверка доступности драйвера.
# Можно попробовать настроить сервис автоматически:
#PASS="DerPar0!"
#/opt/mssql/bin/mssql-conf setup <<<`echo 2; echo Y; echo 9; echo $PASS; echo $PASS`
# Или по обыкновению вручную:
/opt/mssql/bin/mssql-conf setup
|
После чего останется только проверить «подключабельность»:
# /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P '<пароль>' -Q 'sp_databases'
Либо поэтапно...
- Сам сервер:
RPM=mssql-server-1; URL="https://packages.microsoft.com/sles/15/${RPM%-*}-2022/Packages/m" wget $URL/`lftp -e 'ls;quit' $URL | awk '/'$RPM'/{a=$5}END{print a}'` && epmi -y --repack `ls -1 ${RPM}*`
- Cоздать пользователя и каталог для службы:
- # useradd mssql; install -o mssql -g mssql -d /var/opt/mssql
- Во избежание такой ошибки (
su: invalid option -- 'p') поправить кривой вызов su:- # sed -i 's/su $whitelistArg/su/' /opt/mssql/lib/mssql-conf/invokesqlservr.sh
- Провести первоначальную настройку:
- # /opt/mssql/bin/mssql-conf setup
- Навсегда запустить службу:
- # systemctl enable --now mssql-server
- Cоздать пользователя и каталог для службы:
- Полнотекстовый поиск:
RPM=mssql-server-fts; URL="https://packages.microsoft.com/sles/15/${RPM%-*}-2022/Packages/m" wget $URL/`lftp -e 'ls;quit' $URL | awk '/'$RPM'/{a=$5}END{print a}'` && epmi -y --repack `ls -1 ${RPM}*`
- Драйвер ODBC:
RPM=msodbcsql; URL="https://packages.microsoft.com/sles/15/prod/Packages/m" wget $URL/`lftp -e 'ls;quit' $URL | awk '/'$RPM'/{a=$5}END{print a}'` && epmi -y --repack `ls -1 ${RPM}*`
- Зарегистрировать драйвер и проверить его доступность:
- # odbcinst -i -d -f /opt/microsoft/msodbcsql18/etc/odbcinst.ini &>/dev/null; odbcinst -q -d
[PostgreSQL] [MySQL] [ODBC Driver 18 for SQL Server]
- Зарегистрировать драйвер и проверить его доступность:
- MSSQL-tools:
RPM=mssql-tools; URL="https://packages.microsoft.com/sles/15/prod/Packages/m" wget $URL/`lftp -e 'ls;quit' $URL | awk '/'$RPM'/{a=$5}END{print a}'` && epmi -y --repack `ls -1 ${RPM}*`
- Проверить подключение (пароль по запросу вводить из первоначальной настройки):
- # /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -Q 'sp_databases' -C
Password: DATABASE_NAME DATABASE_SIZE REMARKS ------------- ------------- ------- master 7936 NULL model 16384 NULL msdb 24192 NULL tempdb 24576 NULL
- Проверить подключение (пароль по запросу вводить из первоначальной настройки):
Примеры работы с базами данных
| Подстановка в примерах ниже | |
|---|---|
| sa | логин администратора |
| Pa$$word | пароль, указанный при mssql-conf setup |
Использование MSSQL-tools
Дабы не вызывать sqlcmd всякий раз с полным путём, имеет смысл добавить этот путь в переменную PATH:
$ sed -i 's|PATH=.*|&:/opt/mssql-tools18/bin|' ~/.bashrc
- Просмотр доступных баз:
sqlcmd -C -S localhost -U sa -P 'Pa$$word' -Q 'sp_databases'
- Создание базы test:
sqlcmd -C -S localhost -U sa -P 'Pa$$word' -Q 'create database test'
- Резервное копирование базы test:
sqlcmd -C -S localhost -U sa -P 'Pa$$word' -Q "BACKUP DATABASE [test] TO DISK='/path/to/test.bak' WITH COMPRESSION"
- Восстановление базы test из резервной копии:
sqlcmd -C -S localhost -U sa -P 'Pa$$word' -Q "RESTORE DATABASE [test] FROM DISK='/path/to/test.bak' WITH RECOVERY"
Подключение через ODBC
Пример для сервера на локалхосте
- Настройка источника созданием файла /etc/odbc.ini или добавлением в него секции:
[MSSQL] Driver = ODBC Driver 18 for SQL Server Description = Test database on linux MSSQL Server Trace = No Server = 127.0.0.1 Port = 1433 TrustServerCertificate = yes TDS version = 0.95
- Проверка источника по имени секции (MSSQL) из /etc/odbc.ini:
echo 'SELECT name FROM sys.databases' | isql MSSQL sa 'Pa$$word' -b -v +-------------------------------------------------------------------------------------------------------+ | name | +-------------------------------------------------------------------------------------------------------+ | master | | tempdb | | model | | msdb | | test | +-------------------------------------------------------------------------------------------------------+ SQLRowCount returns 0 5 rows fetched
Подключение из LibreOffice Base
Установка JDBC
- Загрузить архив:
$ wget -O ~/sqljdbc_13.2.tgz https://go.microsoft.com/fwlink/?linkid=2330477&clcid=0x419
- Извлечь оттуда jar-файл:
- $ tar -zxvf ~/sqljdbc_13.2.tgz sqljdbc_13.2/enu/jars/mssql-jdbc-13.2.0.jre11.jar -C /tmp/
- # mv /tmp/sqljdbc_13.2/enu/jars/mssql-jdbc-13.2.0.jre11.jar /usr/share/java/
Подключение к базе
Дальнейшие действия выполняются от обычного пользователя.
/ (как в подсказке) не работает [пример от Microsoft].
- По методике из статьи о Microsoft Access добавить в LO Writer раздобытый на предыдущем шаге класс /usr/share/java/mssql-jdbc-13.2.0.jre11.jar.
- Перезапустить LibreOffice.
- В LibreOffice Base выбрать подключение к базе через JDBC, заполнив поля источника и драйвера:
- Указать имя пользователя и необходимость пароля для подключения.
- Сохранить базу данных LO Base в виде файла.
- После чего можно работать на сервере MSSQL:

