21.03.2022
Instalacja i konfiguracja Microsoft SQL Server 2017 na Ubuntu 18.04
Bazy danychKonfiguracjaLinux | UnixOprogramowanie
microsoftsqlserver2017naubuntu1804

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.

Instalacja

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
  1. Dodanie repozytorium oraz kluczy publicznych.
    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
  2. Instalacja SQL Server i uruchomienie wstępnej konfiguracji.
    sudo apt-get update && sudo apt-get install mssql-server -y && sudo /opt/mssql/bin/mssql-conf setup
  3. Instalacja sterownika ODBC oraz narzędzi wiersza poleceń SQL.

    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

Konfiguracja

  1. Import bazy danych.
    1. Przygotowanie katalogu na kopie zapasowe.
      sudo mkdir -p /var/opt/mssql/backup
    2. Zalogowanie się do SQL Server (>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
  2. PHP.
    1. Instalacja dodatkowego oprogramowania. W wersji 18.04.x poniższy pakiet jest domyślnie zainstalowany.
      sudo apt-get install python-software-properties -y
    2. Dodanie repozytorium.
      sudo add-apt-repository ppa:ondrej/php
    3. Instalacja PHP. Wersja jest w pełni "konfigurowalna" i możemy ją zmienić na 7.1, 7.2 czy 7.3.
      sudo apt-get update && sudo apt-get install php7.2 php7.2-dev php7.2-xml -y
    4. Instalacja sterownika SQL Server.
      sudo pecl install sqlsrv && sudo pecl install pdo_sqlsrv
    5. Dodanie sterowników do PHP.
      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

Rozwiązywanie problemów

  1. 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
  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
  3. 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.

0 komentarzy

Szybki kontakt

Masz pytania? Napisz