Witam, od dłuższego czasu szukałem działającego rozwiązania do MSSQL pod Linuxem. Powód jest oczywisty - wydajność. W Windows system generuje setki procesów, szuka wiatru na dysku etc. etc. Poświęciłem na to trochę czasu, ale się opłaciło. Sprawdzone zostało wszystko poza Biuro GT, ale myślę, że też będzie działać.
Opis instalacji dotyczy dystrybucji CENTOS 7, ale myślę, że na innych będzie też działać.
[INSTALACJA CENTOS 7]
1. Przy instalacji trzeba ustawić: IP komputera na stałe;
2. Nazwa komputera [host w ustawieniach sieci] nie może mieć kropki, ani polskich znaków. Domyślnie instalator przyjmuje nazwę localhost.localdomain. W mojej instalacji zmieniłem to na MSSQLSRV;
3. Przy tworzeniu pierwszego użytkownika należy zaznaczyć opcję 'ADMINISTRATOR';
Po zainstalowaniu systemu i zaakceptowaniu umowy licencyjnej logujemy się i jako root instalujemy repozytoria epel release.
Następnie można wykonać skrypt:
# /bin/bash
yum install system-config-users
yum install -y -q p7zip p7zip-plugins
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo -o /etc/yum.repos.d/mssql-server-2017.repo
curl https://packages.microsoft.com/config/rhel/7/prod.repo -o /etc/yum.repos.d/msprod.repo
yum -y install mssql-server mssql-tools unixODBC-devel
echo 'export PATH=$PATH:/opt/mssql-tools/bin' > /etc/profile.d/mssql.sh
source /etc/profile.d/mssql.sh
/opt/mssql/bin/mssql-conf setup
mkdir /data
mkdir /mssqldb
mkdir /mssqldb/backup
mkdir /mssqldb/data
chown mssql:mssql /mssqldb -R
chmod 777 /data
/opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /mssqldb/backup
/opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /mssqldb/data
systemctl stop mssql-server
echo 'Wpisz Polish_CI_AS'
/opt/mssql/bin/mssql-conf set-collation
firewall-cmd --add-port=1433/tcp --permanent
firewall-cmd --permanent --zone=public --add-services=samba
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload
systemctl enable smb.service
systemctl enable nmb.service
service smb start
service nmb start
service mssql-server start
useradd mssqldb -G mssql, wheel -m -p mssqldb
echo 'mssqldb ALL=(ALL) ALL' >>/etc/sudoers
Trzeba koniecznie wykonać operację
echo 'Wpisz Polish_CI_AS'
/opt/mssql/bin/mssql-conf set-collation
przed podłączeniem jakiejkolwiek bazy - inaczej ani Rachmistrz, ani Rewizor nie zaktualizują się.
Ponadto w instalacji ('gotowiec') plik /opt/mssql/mssql.conf ma wyglądać tak:
[sqlagent]
enabled = false
[EULA]
accepteula = Y
[language]
lcid = 1033
[filelocation]
defaultbackupdir = /mssqldb/backup/
defaultdatadir = /mssqldb/data/
defaultdumpdir = /mssqldb/data/
defaultlogdir = /mssqldb/data/
Ustawienie katalogu tymczasowego dla potrzeb aktualizacji:
Trzeba w katalogu na kliencie utworzyć katalog TEMP:
c:\users\[nazwa_uzytkownika_w_windows]\TEMP
Standardowy archiwizator nie będzie działać, dlatego napisałem swój i jest dostępny pod adresem:
https://drive.google.com/file/d/1CWWwUIFQIrnWoP4uNu8Tk821rP0oew25/view?usp=sharingUmożliwia on archiwizację "ręczną" jak i automatyczną. Jest napisany do współpracy z Linuxem.
Wymaga użytkownika linuxa, który przez 'sudo' może zmienić atrybuty plików w systemie linux.
W załącznikach instalka mssql servera i plik konfiguracyjny mssql. Oczywiście po zapisaniu na linuxie muszą one mieć atrybuty 777.
Nie gwarantuję, że będzie działać na Waszej instalacji, nie sposób wszystko przewidzieć, ale u mnie na 'świeżo' postawionym systemie zadziałało.