暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Ubuntu部署SQLServer

原创 Asatinho 2024-01-17
1143

安装

先决条件:
至少需要 2GB 内存才能运行 Linux 上的 SQL Server。
文件系统必须是 XFS 或 EXT4 。 其他文件系统(如 BTRFS)均不受支持 。

要在 Ubuntu 上配置 SQL Server,请在终端中运行以下命令以安装 mssql-server 包 。
导入公共存储库 GPG 密钥:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

注册 SQL Server Ubuntu 存储库:

sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"

运行以下命令以安装 SQL Server:

sudo apt-get update
sudo apt-get install -y mssql-server

包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。

sudo /opt/mssql/bin/mssql-conf setup

请记住为 SA 帐户指定强密码。 需要最小长度为 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号。
完成配置后,验证服务是否正在运行:

systemctl status mssql-server --no-pager

如果计划远程连接,可能还需要在防火墙上打开 SQL Server TCP 端口(默认值为 1433)。

若要创建数据库,则需要使用可在 SQL Server 上运行 Transact-SQL 语句的工具进行连接。 按照以下步骤安装 SQL Server 命令行工具:sqlcmd 实用工具bcp 实用工具

参考:

https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-ver15&tabs=ubuntu2004

自动安装脚本

此示例 bash 脚本可在 Ubuntu 上安装 SQL Server,且无需交互式输入。 它提供数据库引擎、SQL Server 命令行工具和 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!

若要运行该脚本,请执行以下操作:
1.将示例粘贴到你最喜欢的文本编辑器中,并使用便于记忆的名称保存它,例如 install_sql.sh。
2.自定义 MSSQL_SA_PASSWORD、MSSQL_PID 和要更改的任何其他变量。
3.将脚本标记为可执行文件

chmod +x install_sql.sh

4.运行脚本

./install_sql.sh

参考:

https://learn.microsoft.com/zh-cn/sql/linux/sample-unattended-install-ubuntu?view=sql-server-ver15

脱机安装SQLServer引擎

如果 Linux 计算机无法访问快速入门中使用的联机存储库,则可以直接下载包文件。 这些包位于 Microsoft 存储库中,网址:

https://packages.microsoft.com
  • 下载适用于平台的数据库引擎包。 在发行说明的包详细信息部分找到包下载链接。
  • 将下载的包移动到 Linux 计算机。 如果使用了不同的计算机下载包,则可以通过“scp”命令将包移至你的 Linux 计算机。
    -安装数据库引擎包。 根据你的平台使用以下命令之一。 将此示例中的包文件名替换为下载的确切名称。
sudo dpkg -i mssql-server_versionnumber_amd64.deb
  • 解决缺少依赖项的问题:此时可能会出现缺少依赖项的情况。 如果没有,可以跳过此步骤。 在 Ubuntu 上,如果能够访问包含这些依赖项的已批准的存储库,最简单的解决办法是使用 apt-get -f install 命令。 此命令还会完成 SQL Server 的安装。 若要手动检查依赖项,请使用以下命令:
dpkg -I mssql-server_versionnumber_amd64.deb

解决缺少的依赖项后,可以尝试再次安装 mssql-server 包。
我这里安装的是2019,依赖如下:
libatomic1, libunwind8, libnuma1, libc6, adduser, libc++1, gdb, debconf, hostname, openssl (>= 1.0.1g), python3, libgssapi-krb5-2, libsss-nss-idmap0, gawk, sed, libpam0g, libldap-2.4-2, libsasl2-2, libsasl2-modules-gssapi-mit, tzdata, lsof, procps

使用apt-get install安装:

sudo apt-get install libatomic1 libunwind8 libnuma1  libc6 adduser libc++1 gdb debconf hostname  openssl   python3  libgssapi-krb5-2  libsss-nss-idmap0  gawk  sed  libpam0g  libldap-2.4-2  libsasl2-2  libsasl2-modules-gssapi-mit  tzdata  lsof  procps

安装完依赖后,再执行安装,提示如下:

root@admin123:/app/database# sudo dpkg -i mssql-server_15.0.4345.5-2_amd64.deb
Selecting previously unselected package mssql-server.
(Reading database ... 113557 files and directories currently installed.)
Preparing to unpack mssql-server_15.0.4345.5-2_amd64.deb ...
Unpacking mssql-server (15.0.4345.5-2) ...
Setting up mssql-server (15.0.4345.5-2) ...

+--------------------------------------------------------------+
Please run 'sudo /opt/mssql/bin/mssql-conf setup'
to complete the setup of Microsoft SQL Server
+--------------------------------------------------------------+

Processing triggers for libc-bin (2.31-0ubuntu9.14) ...
Processing triggers for man-db (2.9.1-1) ...
  • 完成 SQL Server 安装。 使用“mssql-conf”完成 SQL Server 安装:
sudo /opt/mssql/bin/mssql-conf setup

步骤如下:

root@admin123:/app/database# sudo /opt/mssql/bin/mssql-conf setup
Choose an edition of SQL Server:
  1) Evaluation (free, no production use rights, 180-day limit)
  2) Developer (free, no production use rights)
  3) Express (free)
  4) Web (PAID)
  5) Standard (PAID)
  6) Enterprise (PAID) - CPU Core utilization restricted to 20 physical/40 hyperthreaded
  7) Enterprise Core (PAID) - CPU Core utilization up to Operating System Maximum
  8) I bought a license through a retail sales channel and have a product key to enter.

Details about editions can be found at
https://go.microsoft.com/fwlink/?LinkId=2109348&clcid=0x409

Use of PAID editions of this software requires separate licensing through a
Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate
number of licenses in place to install and run this software.

Enter your edition(1-8): 6
The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=2104294&clcid=0x409

The privacy statement can be viewed at:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409

Do you accept the license terms? [Yes/No]:Yes

Enter the SQL Server system administrator password:
Confirm the SQL Server system administrator password:
Configuring SQL Server...

The licensing PID was successfully processed. The new edition is [Enterprise Edition].
ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /lib/systemd/system/mssql-server.service.
Setup has completed successfully. SQL Server is now starting.

查看运行状态:

systemctl status mssql-server.service

参考:

https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup?view=sql-server-ver15#offline

下载地址:

https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-release-notes-2019?view=sql-server-ver15

脱机安装SQL Server 命令行工具 sqlcmd 和 bcp

首先,找到并复制适用于你的 Linux 分发版的 mssql-tools18 包。 对于 Ubuntu 20.04,此包位于 :

https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/m/mssql-tools

此外,找到并复制 msodbcsql18 包,它是一个依赖项。 msodbcsql18 包在 unixodbc-dev 上还有一个依赖项。 对于 Ubuntu,msodbcsql18 包位于

https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/m/msodbcsql17/

以及

https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/u/unixodbc/

将下载的包移至 Linux 计算机。
装 mssql-tools18 和 msodbc18 包。
如果遇到任何依赖项错误,请忽略,直到出现下一步操作。
替换为正确的版本:

sudo dpkg -i msodbcsql18_<version>.deb
sudo dpkg -i mssql-tools18_<version>.deb

解决缺少依赖项的问题:此时可能会出现缺少依赖项的情况。 如果没有,可以跳过此步骤。 在某些情况下,必须手动查找并安装这些依赖项。
如果能够访问包含这些依赖项的已批准的存储库,最简单的解决办法是使用 apt-get 命令:

sudo apt-get -f install

如果此步骤对 Debian 包不起作用,可通过以下命令检查必需的依赖项:

dpkg -I msodbcsql18_<version>_amd64.deb | grep "Depends:"
dpkg -I mssql-tools18_<version>_amd64.deb | grep "Depends:"

通过操作验证本次需要的包及安装步骤如下:

sudo dpkg -i libodbc1_2.3.11-1_amd64.deb
sudo dpkg -i odbcinst1debian2_2.3.11-1_amd64.deb odbcinst_2.3.11-1_amd64.deb
sudo dpkg -i unixodbc_2.3.11-1_amd64.deb
sudo apt-get install libltdl3-dev
sudo dpkg -i unixodbc-dev_2.3.11-1_amd64.deb
sudo dpkg -i msodbcsql18_18.3.2.1-1_amd64.deb
sudo dpkg -i mssql-tools18_18.2.1.1-1_amd64.deb

下载地址汇总:

https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/

ODBC驱动参考:

https://learn.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16&tabs=ubuntu18-install%2Cubuntu17-install%2Cdebian8-install%2Credhat7-13-install%2Cubuntu-offline

工具安装详见另一篇文章:在Ubuntu上安装SQLServer命令行工具


SQLServer on Linux
参考:

https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-overview?view=sql-server-ver15
最后修改时间:2024-10-14 14:17:24
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论