Пример: скрипт автоматической установки SQL Server для Ubuntu

Применимо к:SQL Server — Linux

В этом примере скрипта Bash выполняется установка SQL Server в Ubuntu без интерактивного ввода. В нем демонстрируются примеры установки ядра СУБД, программ командной строки SQL Server и агента SQL Server, а также действий, которые необходимо выполнить после установки. При необходимости вы можете установить компонент полнотекстового поиска и создать пользователя с правами администратора.

Совет

Если вам не требуется скрипт автоматической установки, можно воспользоваться самым простым способом установки SQL Server, который описывается в кратком руководстве для Ubuntu. Дополнительные сведения об установке см. в разделе Руководство по установке SQL Server на Linux.

Необходимые компоненты

  • Для работы с SQL Server на Linux потребуется не менее 2 ГБ памяти.
  • Должна использоваться файловая система XFS или EXT4. Другие файловые системы, например BTRFS, не поддерживаются.
  • Сведения о других требованиях к системе см. в статье Требования к системе для SQL Server на Linux.

Пример скрипта

В этом примере устанавливается SQL Server 2019 (15.x) на Ubuntu Server 20.04. Чтобы установить другую версию SQL Server или Ubuntu Server, измените пути к репозиторию Майкрософт соответствующим образом.

Сохраните пример скрипта в файл, а затем измените его. Необходимо заменить значения переменных в скрипте. Также вы можете задать любые переменные скрипта как переменные среды, предварительно удалив их из файла скрипта.

Скрипт может завершиться ошибкой, если SQL Server запускается слишком долго. Это обусловлено тем, что скрипт будет выходить с ненулевым состоянием. Удаление переключателя -e в первой строке может устранить эту проблему.

Важно!

Переменная среды SA_PASSWORD является нерекомендуемой. Вместо этого используйте MSSQL_SA_PASSWORD.

#!/bin/bash -e

# Use the following variables to control your install:

# Password for the SA user (required)
MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>'

# Product ID of the version of SQL Server you're installing
# Must be evaluation, developer, express, web, standard, enterprise, or your 25 digit product key
# Defaults to developer
MSSQL_PID='evaluation'

# Enable SQL Server Agent (recommended)
SQL_ENABLE_AGENT='y'

# Install SQL Server Full Text Search (optional)
# SQL_INSTALL_FULLTEXT='y'

# Create an additional user with sysadmin privileges (optional)
# SQL_INSTALL_USER='<Username>'
# SQL_INSTALL_USER_PASSWORD='<YourStrong!Passw0rd>'

if [ -z $MSSQL_SA_PASSWORD ]
then
  echo Environment variable MSSQL_SA_PASSWORD must be set for unattended install
  exit 1
fi

echo Adding Microsoft repositories...
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
repoargs="$(curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
sudo add-apt-repository "${repoargs}"
repoargs="$(curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list)"
sudo add-apt-repository "${repoargs}"

echo Running apt-get update -y...
sudo apt-get update -y

echo Installing SQL Server...
sudo apt-get install -y mssql-server

echo Running mssql-conf setup...
sudo MSSQL_SA_PASSWORD=$MSSQL_SA_PASSWORD \
     MSSQL_PID=$MSSQL_PID \
     /opt/mssql/bin/mssql-conf -n setup accept-eula

echo Installing mssql-tools and unixODBC developer...
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev

# Add SQL Server tools to the path by default:
echo Adding SQL Server tools to your path...
echo PATH="$PATH:/opt/mssql-tools/bin" >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

# Optional Enable SQL Server Agent:
if [ ! -z $SQL_ENABLE_AGENT ]
then
  echo Enabling SQL Server Agent...
  sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
fi

# Optional SQL Server Full Text Search installation:
if [ ! -z $SQL_INSTALL_FULLTEXT ]
then
    echo Installing SQL Server Full-Text Search...
    sudo apt-get install -y mssql-server-fts
fi

# Configure firewall to allow TCP port 1433:
echo Configuring UFW to allow traffic on port 1433...
sudo ufw allow 1433/tcp
sudo ufw reload

# Optional example of post-installation configuration.
# Trace flags 1204 and 1222 are for deadlock tracing.
# echo Setting trace flags...
# sudo /opt/mssql/bin/mssql-conf traceflag 1204 1222 on

# Restart SQL Server after installing:
echo Restarting SQL Server...
sudo systemctl restart mssql-server

# Connect to server and get the version:
counter=1
errstatus=1
while [ $counter -le 5 ] && [ $errstatus = 1 ]
do
  echo Waiting for SQL Server to start...
  sleep 3s
  /opt/mssql-tools/bin/sqlcmd \
    -S localhost \
    -U SA \
    -P $MSSQL_SA_PASSWORD \
    -Q "SELECT @@VERSION" 2>/dev/null
  errstatus=$?
  ((counter++))
done

# Display error if connection failed:
if [ $errstatus = 1 ]
then
  echo Cannot connect to SQL Server, installation aborted
  exit $errstatus
fi

# Optional new user creation:
if [ ! -z $SQL_INSTALL_USER ] && [ ! -z $SQL_INSTALL_USER_PASSWORD ]
then
  echo Creating user $SQL_INSTALL_USER
  /opt/mssql-tools/bin/sqlcmd \
    -S localhost \
    -U SA \
    -P $MSSQL_SA_PASSWORD \
    -Q "CREATE LOGIN [$SQL_INSTALL_USER] WITH PASSWORD=N'$SQL_INSTALL_USER_PASSWORD', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON; ALTER SERVER ROLE [sysadmin] ADD MEMBER [$SQL_INSTALL_USER]"
fi

echo Done!

Выполнение скрипта

Выполните следующее, чтобы запустить этот сценарий.

  1. Вставьте этот пример в предпочитаемый текстовый редактор и сохраните его под удобным для запоминания именем, например install_sql.sh.

  2. Настройте MSSQL_SA_PASSWORD, MSSQL_PID и любые другие переменные, которые требуется изменить.

  3. Пометка скрипта исполняемым

    chmod +x install_sql.sh
    
  4. Выполнение скрипта

    ./install_sql.sh
    

Общие сведения о скрипте

Сначала этот скрипт Bash устанавливает значения некоторых переменных. Это могут быть как переменные скрипта, например этого образца, так и переменные среды. Переменная MSSQL_SA_PASSWORD является обязательной для установки SQL Server. Остальные переменные являются пользовательскими и при необходимости задаются для скрипта. Этот пример скрипта выполняет следующие операции:

  1. Импорт открытых ключей, например Microsoft GPG.

  2. Регистрация репозиториев Майкрософт для SQL Server и программ командной строки.

  3. Обновление локальных репозиториев

  4. Установите SQL Server.

  5. Задайте конфигурацию SQL Server с MSSQL_SA_PASSWORD и автоматически примите условия лицензионного соглашения.

  6. Автоматически примите лицензионное соглашение для программ командной строки SQL Server, установите их, а затем установите пакет unixodbc-dev.

  7. Для удобства работы добавьте программы командной строки SQL Server в путь.

  8. Включите агент SQL Server, если переменная SQL_ENABLE_AGENT скрипта задана по умолчанию.

  9. Если задана переменная SQL_INSTALL_FULLTEXT, при необходимости установите компонент полнотекстового поиска SQL Server.

  10. В брандмауэре системы разблокируйте порт TCP 1433, который используется для подключения к SQL Server из других систем.

  11. При необходимости установите флаги трассировки для трассировки взаимоблокировок (требует раскомментирование строк).

  12. Установка SQL Server завершена. Прежде чем начать работу с ней, перезапустите процесс.

  13. Проверьте корректность установки SQL Server (при необходимости скрывайте сообщения об ошибках).

  14. Если одновременно заданы переменные SQL_INSTALL_USER и SQL_INSTALL_USER_PASSWORD, создайте нового пользователя с правами администратора сервера.

Автоматическая установка

Чтобы оптимизировать многократную автоматическую установку, создайте автономный скрипт Bash, который будет задавать нужные переменные среды. Вы можете удалить любые переменные из этого примера скрипта и поместить их в отдельный скрипт Bash.

#!/bin/bash
export MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>'
export MSSQL_PID='evaluation'
export SQL_ENABLE_AGENT='y'
export SQL_INSTALL_USER='<Username>'
export SQL_INSTALL_USER_PASSWORD='<YourStrong!Passw0rd>'

После этого запустите скрипт Bash следующим образом:

. ./my_script_name.sh