Приехал новый сервер и пришла пора избавится от старого Windows 2003 на котором крутится база EasyDent4. Из-за моей не любви к Windows для некоторых задачь (а еще он платный) — не хочется поднимать отдельную машину только ради MSSQL.

Итак приступим. Устанавливать будем на 64 битную Ubuntu 16.04. На сервере должно быть не менее 3.25ГБ ОЗУ, иначе MSSQL даже не установится и выдаст ошибку. Инструкция по установке на сайте Microsoft есть но она немного утарела и некоторые команды не актуальны. Вот мой дополненный и исправленный вариант.

Установка MSSQL Server на Ubuntu

Добавляем репозиторий Microsoft:

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | tee /etc/apt/sources.list.d/mssql-server.list

Устанвливаем MSSQL сервер (На сервере должно быть не менее 3.25ГБ ОЗУ иначе apt-get install выдаст ошибку)

apt-get update
apt-get install mssql-server

Эти 2 команды нужны, потому что без них скрипт устновки вылетает с какими-то дикими ошибками об отсутвующей локали

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Запускаем устновку

/opt/mssql/bin/mssql-conf setup

На этом шаге скрипт установки спросит согласны ли мы с лицензией и попросит выбрать тип устанавливаемого сервера, я выбрал Express (потому что он бесплатный) и задать пароль для sa пользователя (он должен быть не менее 8 символов)

Если нужно устанавливаем консольный клиент для MSSQL

apt-get install sqsh

После чего можно подключится к установленному MSSQL серверу

sqsh -S localhost -U sa

и например посмотреть его версию

>SELECT @@VERSION AS 'SQL Server Version'
>go

что бы выйти из консоли досточно набрать quit и нажать Enter

Подготовка дампа базы

 

Загрузка дампа

Создаем папку на сервере куда положим файл из которого необходимо восстановить базу

mkdir -p /var/opt/mssql/backup/

Похоже что папка в которой лежит бекап для восстановленияя должна быть в директори /var/opt/mssql иначе будет такая ошибка

Cannot open backup device '/root/backup.bak'. Operating system error 2(The system cannot find the file specified.).

 

restore database TSFD
from disk='/var/opt/mssql/backup/backup.bak'
with
move 'TSFD_Data' to '/var/opt/mssql/data/TSFD.mdf',
move 'TSFD_Log' to '/var/opt/mssql/data/TSFD.ldf'
go
restore FILELISTONLY
from disk='/var/opt/mssql/backup/backup.bak'