Поделиться через


Пример: скрипт автоматической установки 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.

Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.

#!/bin/bash -e

# Use the following variables to control your install:

# Password for the SA user (required)
MSSQL_SA_PASSWORD='<password>'

# 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='<password>'

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='<password>'
export MSSQL_PID='evaluation'
export SQL_ENABLE_AGENT='y'
export SQL_INSTALL_USER='<Username>'
export SQL_INSTALL_USER_PASSWORD='<password>'

Внимание

Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.

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

. ./my_script_name.sh