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

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

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

Совет

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

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

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

Важно!

Для работы SQL Server требуется компонент libsss_nss_idmap0, который не входит в состав предоставляемых по умолчанию репозиториев SLES. Этот компонент можно установить из пакета SDK для SLES.

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

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

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

Важно!

Переменная среды 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...
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2019.repo
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/prod.repo 
sudo zypper --gpg-auto-import-keys refresh

#Add the SLES v15 SP3 SDK to obtain libsss_nss_idmap0
sudo SUSEConnect -p sle-sdk/15.3/x86_64

echo Installing SQL Server...
sudo zypper 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 zypper install -y mssql-tools unixODBC-devel

# 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 Enable 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 zypper install -y mssql-server-fts
fi

# Configure firewall to allow TCP port 1433:
echo Configuring SuSEfirewall2 to allow traffic on port 1433...
sudo SuSEfirewall2 open INT TCP 1433
sudo SuSEfirewall2 stop
sudo SuSEfirewall2 start

# Example of setting post-installation configuration options
# Set trace flags 1204 and 1222 for deadlock tracing:
# echo Setting trace flags...
# sudo /opt/mssql/bin/mssql-conf traceflag 1204 1222 on

# Restart SQL Server after making configuration changes:
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 5s
  /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-devel.

  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