샘플: SUSE Linux Enterprise Server용 무인 SQL Server 설치 스크립트
적용 대상: SQL Server - Linux
이 샘플 Bash 스크립트는 대화형 입력 없이 SLES(SUSE Linux Enterprise Server)에 SQL Server를 설치합니다. 이 스크립트는 데이터베이스 엔진, SQL Server 명령줄 도구 및 SQL Server 에이전트를 설치하는 예를 제공하고, 설치 후 단계를 수행합니다. 필요에 따라 전체 텍스트 검색을 설치하고 관리자를 만들 수 있습니다.
팁
무인 설치 스크립트가 필요하지 않은 경우 SQL Server를 설치하는 가장 빠른 방법은 SLES 빠른 시작을 따르는 것입니다. 다른 설정 내용은 Linux에서 SQL Server 설치 지침을 참조하세요.
필수 조건
- Linux에서 SQL Server를 실행하려면 2GB 이상의 메모리가 필요합니다.
- 파일 시스템은 XFS 또는 EXT4여야 합니다. BTRFS 등의 다른 파일 시스템은 지원되지 않습니다.
- 기타 시스템 요구 사항은 SQL Server on Linux에 대한 시스템 요구 사항을 참조하세요.
Important
SQL Server에는 기본 SLES 리포지토리에서 제공하지 않는 libsss_nss_idmap0
이(가) 필요합니다. 이 기능은 SLES SDK에서 설치할 수 있습니다.
샘플 스크립트
이 예제에서는 SLES v15 SP3에 SQL Server 2019(15.x)를 설치합니다. 다른 버전의 SQL Server 또는 SLES를 설치하려면 그에 따라 Microsoft 리포지토리 경로를 변경합니다.
예제 스크립트를 파일로 저장한 후 사용자 지정합니다. 스크립트에서 변수 값을 바꿔야 합니다. 스크립트 파일에서 스크립팅 변수를 제거하기만 하면 스크립팅 변수를 환경 변수로 설정할 수도 있습니다.
Important
SA_PASSWORD
환경 변수는 사용되지 않습니다. 대신 MSSQL_SA_PASSWORD
를 사용하세요.
암호는 SQL Server 기본 암호 정책을 따라야 합니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. 암호 길이는 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...
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!
스크립트 실행
스크립트를 실행하려면
원하는 텍스트 편집기에 샘플을 붙여넣고 기억하기 쉬운
install_sql.sh
과 같은 이름으로 저장합니다.MSSQL_SA_PASSWORD
,MSSQL_PID
및 변경하려는 다른 변수를 사용자 지정합니다.스크립트를 실행 가능으로 표시합니다
chmod +x install_sql.sh
스크립트 실행
./install_sql.sh
스크립트 해석
bash 스크립트가 수행하는 첫 번째 작업은 몇 가지 변수를 설정하는 것입니다. 이 변수는 샘플과 같은 스크립팅 변수이거나 환경 변수일 수 있습니다. 변수 MSSQL_SA_PASSWORD
는 SQL Server 설치에 필요합니다. 다른 변수는 스크립트에 대해 만든 사용자 지정 변수입니다. 샘플 스크립트는 다음 단계를 수행합니다.
공개 Microsoft GPG 키를 가져옵니다.
SQL Server 및 명령줄 도구를 위한 Microsoft 리포지토리를 등록합니다.
로컬 리포지토리를 업데이트합니다.
SQL Server 설치.
MSSQL_SA_PASSWORD
를 사용하여 SQL Server를 구성하고 최종 사용자 사용권 계약에 자동으로 동의합니다.SQL Server 명령줄 도구에 대한 최종 사용자 사용권 계약에 자동으로 동의하고, 설치한 후
unixODBC-devel
패키지를 설치합니다.쉽게 사용할 수 있도록 SQL Server 명령줄 도구를 경로에 추가합니다.
기본적으로 스크립팅 변수
SQL_ENABLE_AGENT
이 설정된 경우 SQL Server 에이전트 사용하도록 설정합니다.변수
SQL_INSTALL_FULLTEXT
이 설정된 경우 필요에 따라 SQL Server 전체 텍스트 검색을 설치합니다.다른 시스템에서 SQL Server에 연결하는 데 필요한 시스템 방화벽의 TCP용 포트 1433을 차단 해제합니다.
필요에 따라 교착 상태 추적에 대한 추적 플래그를 설정합니다(줄의 주석 처리를 제거해야 합니다).
이제 SQL Server가 설치되어 작동하도록 프로세스를 다시 시작합니다.
오류 메시지를 숨기는 동안 SQL Server가 올바르게 설치되었는지 확인합니다.
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 기본 암호 정책을 따라야 합니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. 암호 길이는 128자까지 가능하며 되도록 길고 복잡한 암호를 사용합니다.
그런 다음, bash 스크립트를 다음과 같이 실행합니다.
. ./my_script_name.sh