
Ostatnia aktualizacja: 17.09.2022 r.
Kilka lat temu wpadłem na szalony pomysł przeniesienia środowiska produkcyjnego Microsoft SQL Server z Windows`a na Linux`a, a konkretnie Ubuntu 18.04. Mimo, iż testy przebiegły pomyślnie (przenosiłem i testowałem bazy danych systemu CRM SalesPartner oraz znanego systemu do zarządzania sprzedażą i magazynem SubiektGT z MSSQL 2012 działającym na Windows Server 2012 R2) to suma sumarum ostatecznie nie zdecydowałem się na przerzut - zbyt wiele osób odciągało mnie od tego pomysłu i ich posłuchałem. 😆 Nie wiem jak sytuacja wygląda obecnie, gdyż od tamtego czasu i na czas pisania niniejszego wpisu, nie wróciłem do tego tematu, jednak mam nadzieję, że kiedyś to zrobię.
Poniżej zamieszczam, ku pamięci, wiedzę, którą zdobyłem podczas pierwszych moich testów.
Oficjalne wsparcie jest tylko dla wersji 16.04.x, jednak możliwa jest instalacja na 18.04.x, ale przed instalacją należy wykonać polecenie:
sudo apt-get remove libcurl4 -y && sudo apt-get install libcurl3 -y
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list | sudo tee /etc/apt/sources.list.d/mssql-server-2017.list
sudo curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update && sudo apt-get install mssql-server -y && sudo /opt/mssql/bin/mssql-conf setup
sqlcmd -S localhost -U sa -P hasło
1>
= poprawne połączenie.
Polecenia SQL zawsze kończymy słowem GO
.
sudo ACCEPT_EULA=Y apt-get install msodbcsql17 mssql-tools unixodbc-dev -y
sudo echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
sudo echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
sudo mkdir -p /var/opt/mssql/backup
>1
= poprawne zalogowanie) i import bazy.
sqlcmd -S localhost -U sa -P hasło
RESTORE DATABASE NazwaBazyDanych
FROM DISK = '/var/opt/mssql/backup/NazwaBazyDanych.bak'
WITH MOVE 'NazwaBazyDanych' TO '/var/opt/mssql/data/NazwaBazyDanych.mdf',
MOVE 'NazwaBazyDanych_Log' TO '/var/opt/mssql/data/NazwaBazyDanych_Log.ldf'
GO
sudo apt-get install python-software-properties -y
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update && sudo apt-get install php7.2 php7.2-dev php7.2-xml -y
sudo pecl install sqlsrv && sudo pecl install pdo_sqlsrv
sudo echo "extension=sqlsrv.so" > /etc/php/7.2/mods-available/sqlsrv.ini
sudo echo "extension=pdo_sqlsrv.so" > /etc/php/7.2/mods-available/pdo_sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/sqlsrv.ini /etc/php/7.2/cli/conf.d/20-sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/sqlsrv.ini /etc/php/7.2/apache2/conf.d/20-sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/cli/conf.d/30-pdo_sqlsrv.ini
sudo ln -s /etc/php/7.2/mods-available/pdo_sqlsrv.ini /etc/php/7.2/apache2/conf.d/30-pdo_sqlsrv.ini
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server: TCP Provider: Error code 0x2746
Błąd pojawiający się podczas logowania.
sudo apt-get install mssql-server=14.0.3192.2-2
Msg 3234, Level 16, State 2
Logical file '%' is not part of database 'NazwaBazy'. Use RESTORE FILELISTONLY to list logical file names.
Błąd pojawiający się podczas importu bazy danych. Rozwiązaniem jest odczytanie poprawnych nazw plików *.mdf, *.ndf, *.ldf (LogicalName) i modyfikacja polecenia odtwarzającego bazę danych.
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/NazwaBazyDanych.bak'
GO
Msg 3013, Level 16, State 1
RESTORE DATABASE is terminating abnormally.
Błąd pojawiający się podczas importu bazy danych, który spowodowany jest błędnym znacznikiem/nazwą plików bazy danych podczas odtwarzania kopii.