示例:Ubuntu 的无人参与 SQL Server 安装脚本
适用于: SQL Server - Linux
此示例 bash 脚本可在 Ubuntu 上安装 SQL Server,且无需交互式输入。 它提供数据库引擎、SQL Server 命令行工具和 SQL Server 代理的安装示例,并执行安装后步骤。 可以选择安装全文搜索并创建管理用户。
提示
如果不需要无人参与安装脚本,则安装 SQL Server 最快速的方法是遵循 Ubuntu 的快速入门。 有关其他设置信息,请参阅 Linux 上的 SQL Server 的安装指南。
先决条件
- 至少需要 2GB 内存才能运行 Linux 上的 SQL Server。
- 文件系统必须是 XFS 或 EXT4 。 其他文件系统(如 BTRFS)均不受支持 。
- 有关其他系统要求,请参阅 Linux 上的 SQL Server 的系统要求。
示例脚本
此示例在 Ubuntu Server 20.04 上安装 SQL Server 2019 (15.x)。 如果要安装不同版本的 SQL Server 或 Ubuntu Server,请相应地更改 Microsoft 存储库路径。
将示例脚本保存到文件,然后对其进行自定义。 必须替换脚本中的变量值。 还可以将任何脚本变量设置为环境变量,前提是从脚本文件中删除它们。
如果 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!
运行脚本
若要运行该脚本,请执行以下操作:
将示例粘贴到你最喜欢的文本编辑器中,并使用便于记忆的名称保存它,例如
install_sql.sh
。自定义
MSSQL_SA_PASSWORD
、MSSQL_PID
和要更改的任何其他变量。将脚本标记为可执行文件
chmod +x install_sql.sh
运行脚本
./install_sql.sh
了解脚本
bash 脚本执行的第一件事是设置几个变量。 这些变量可以是脚本变量(例如本示例),也可以是环境变量。 SQL Server 安装需要变量 MSSQL_SA_PASSWORD
。 其他是为脚本创建的自定义变量。 示例脚本执行以下步骤:
导入公共 Microsoft GPG 密钥。
注册用于 SQL Server 的 Microsoft 存储库和命令行工具。
更新本地存储库。
安装 SQL Server。
将 SQL Server 配置为
MSSQL_SA_PASSWORD
并自动接受最终用户许可协议。自动接受 SQL Server 命令行工具的最终用户许可协议,安装这些工具,然后安装
unixodbc-dev
包。为便于使用,请将 SQL Server 命令行工具添加到路径。
如果已设置
SQL_ENABLE_AGENT
变量的脚本,则默认启用 SQL Server 代理。如果已设置
SQL_INSTALL_FULLTEXT
变量,则可以选择安装 SQL Server 全文搜索。在系统防火墙上取消阻止 TCP 端口 1433,这是从另一个系统连接到 SQL Server 所必需的。
(可选)设置跟踪标志以进行死锁跟踪(需要取消注释行)。
SQL Server 现已安装,若要使其可操作,请重启该过程。
验证是否已正确安装 SQL Server,并隐藏所有错误消息。
如果同时设置
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