快速入门:在 SUSE Linux Enterprise Server 上安装 SQL Server 并创建数据库

适用于: SQL Server(所有受支持的版本)- Linux

在本快速入门中,将在 SUSE Linux Enterprise Server (SLES) v12 上安装 SQL Server 2017 (14.x)。 然后可以使用 sqlcmd 进行连接,创建第一个数据库并运行查询。

有关支持的平台的详细信息,请参阅 Linux 上的 SQL Server 2017 的发行说明

在本快速入门中,将在 SUSE Linux Enterprise Server (SLES) v15 (SP3) 上安装 SQL Server 2019 (15.x)。 然后可以使用 sqlcmd 进行连接,创建第一个数据库并运行查询。

有关支持的平台的详细信息,请参阅 Linux 上的 SQL Server 2019 的发行说明

在本快速入门中,你将在 SUSE Linux Enterprise Server (SLES) v15 (SP3) 上安装 SQL Server 2022 (16.x)。 然后可以使用 sqlcmd 进行连接,创建第一个数据库并运行查询。

有关受支持的平台的详细信息,请参阅 Linux 上的 SQL Server 2022 的发行说明

提示

本教程需要用户输入和 Internet 连接。 如果对无人参与脱机安装过程感兴趣,请参阅 Linux 上的 SQL Server 的安装指南

先决条件

必须拥有 SLES v12 SP5 计算机(内存至少为 2 GB)。 文件系统必须是 XFS 或 EXT4 。 其他文件系统(如 BTRFS)均不受支持 。

必须拥有 SLES v15 (SP1 - SP3) 计算机(内存至少为 2 GB)。 文件系统必须是 XFS 或 EXT4 。 其他文件系统(如 BTRFS)均不受支持 。

必须拥有 SLES v15 (SP1 - SP3) 计算机(内存至少为 2 GB)。 文件系统必须是 XFS 或 EXT4 。 其他文件系统(如 BTRFS)均不受支持 。

若要在自己的计算机上安装 SUSE Linux Enterprise Server,请转到https://www.suse.com/products/server。 也可以在 Azure 中创建 SLES 虚拟机。 请参阅 使用 Azure CLI 创建和管理 Linux VM并在对 az vm create 的调用中使用 --image SLES

如果以前安装了 SQL Server 的社区技术预览版 (CTP) 或候选发布 (RC) 版本,则必须先删除旧存储库,然后再执行这些步骤。 有关详细信息,请参阅为 SQL Server 配置 Linux 存储库

注意

目前,不支持将 Windows 10 或 Windows 11 中适用于 Linux 的 Windows 子系统作为安装目标。

有关其他系统要求,请参阅 Linux 上的 SQL Server 的系统要求

安装 SQL Server

若要在 SLES 上配置 SQL Server,请在终端中运行以下命令以安装 mssql-server 包 :

  1. 下载 SQL Server 2017 (14.x) SLES 存储库配置文件:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo
    

    提示

    如果要安装不同版本的 SQL Server,请参阅本文的 SQL Server 2019 (15.x) 版本。

  2. 刷新存储库。

    sudo zypper --gpg-auto-import-keys refresh
    

    若要确保你的系统上安装了 Microsoft 包签名密钥,可用使用以下命令导入它:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. 运行以下命令以安装 SQL Server:

    sudo zypper install -y mssql-server
    
  4. 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。 作为提醒,以下 SQL Server 版本是免费提供许可的:Evaluation、Developer 和 Express 版。

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

    请记住为 SA 帐户指定强密码。 需要最小长度为 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号。

  5. 完成配置后,验证服务是否正在运行:

    systemctl status mssql-server
    
  6. 如果计划远程连接,可能还需要在防火墙上打开 SQL Server TCP 端口(默认值为 1433)。 如果使用 SuSE 防火墙,需要编辑 /etc/sysconfig/SuSEfirewall2 配置文件。 修改 FW_SERVICES_EXT_TCP 条目以包括 SQL Server 端口号。

    FW_SERVICES_EXT_TCP="1433"
    

此时,SQL Server 在 SLES 计算机上运行,随时可以使用!

  1. 下载 SQL Server 2019 (15.x) SLES 存储库配置文件:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2019.repo
    

    警告

    SUSE Linux Enterprise Server (SLES) 不是 SQL Server 2022 (16.x) 的社区技术预览版 (CTP) 2.1 版支持的平台。 无法安装 SQL Server 2022 (16.x)。

    提示

    如果要安装不同版本的 SQL Server,请参阅本文的 SQL Server 2017 (14.x) 版本。

  2. 刷新存储库。

    sudo zypper --gpg-auto-import-keys refresh
    

    若要确保你的系统上安装了 Microsoft 包签名密钥,可用使用以下命令导入它:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. 运行以下命令以安装 SQL Server:

    sudo zypper install -y mssql-server
    
  4. 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。 作为提醒,以下 SQL Server 版本是免费提供许可的:Evaluation、Developer 和 Express 版。

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

    请记住为 SA 帐户指定强密码。 需要最小长度为 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号。

  5. 完成配置后,验证服务是否正在运行:

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

    注意

    例如,在 SLES 上,可使用 firewalld 管理防火墙。 使用 sudo zypper install firewalld 安装防火墙,然后使用 sudo systemctl start firewalld 启动该防火墙。 使用 sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent 添加防火墙规则,然后使用 sudo firewall-cmd --reload 重载防火墙以使设置生效。

此时,SQL Server 在 SLES 计算机上运行,随时可以使用!

  1. 下载 SQL Server 2022 (16.x) SLES 存储库配置文件:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo
    

    提示

    如果要安装不同版本的 SQL Server,请参阅本文的 SQL Server 2017 (14.x)SQL Server 2019 (15.x) 版本。

  2. 刷新存储库。

    sudo zypper --gpg-auto-import-keys refresh
    

    若要确保你的系统上安装了 Microsoft 包签名密钥,可用使用以下命令导入它:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. 运行以下命令以安装 SQL Server:

    sudo zypper install -y mssql-server
    
  4. 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。 作为提醒,以下 SQL Server 版本是免费提供许可的:Evaluation、Developer 和 Express 版。

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

    请记住为 SA 帐户指定强密码。 需要最小长度为 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号。

  5. 完成配置后,验证服务是否正在运行:

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

    注意

    例如,在 SLES 上,可使用 firewalld 管理防火墙。 使用 sudo zypper install firewalld 安装防火墙,然后使用 sudo systemctl start firewalld 启动该防火墙。 使用 sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent 添加防火墙规则,然后使用 sudo firewall-cmd --reload 重载防火墙以使设置生效。

此时,SQL Server 在 SLES 计算机上运行,随时可以使用!

安装 SQL Server 命令行工具

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

  1. 将 SQL Server 存储库添加到 Zypper。

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/prod.repo
    sudo zypper --gpg-auto-import-keys refresh
    
  2. 使用 unixODBC 开发人员包安装 mssql-tools。 有关详细信息,请参阅安装 Microsoft ODBC Driver for SQL Server (Linux)

    sudo zypper install -y mssql-tools unixODBC-devel
    
  3. 为方便起见,将 /opt/mssql-tools/bin/ 添加到 PATH环境变量,以便可从 bash shell 访问 sqlcmd 或 bcp。

    对于交互式会话,请使用以下命令在 ~/.bash_profile 文件中修改 PATH 环境变量:

    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
    

    对于非交互式会话,请使用以下命令在 ~/.bashrc 文件中修改 PATH 环境变量:

    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
    source ~/.bashrc
    

本地连接

以下步骤使用 sqlcmd 本地连接到新的 SQL Server 实例。

  1. 使用 SQL Server 名称 (-S)、用户名 (-U) 和密码 (-P) 的相应参数运行 sqlcmd。 在本教程中,用户进行本地连接,因此服务器名称为 localhost。 用户名为 sa,密码是在安装过程中为 SA 帐户提供的密码。

    sqlcmd -S localhost -U sa -P '<YourPassword>'
    

    可以在命令行上省略密码,以收到密码输入提示。

    如果以后决定进行远程连接,请为 -S 参数指定计算机名称或 IP 地址,并确保防火墙上的端口 1433 已打开。

  2. 如果成功,应会显示 sqlcmd 命令提示符:1>

  3. 如果连接失败,先尝试诊断错误消息中所述的问题。 然后查看连接故障排除建议

创建和查询数据

下面各部分将逐步介绍如何使用 sqlcmd 新建数据库、添加数据并运行简单查询。

有关编写 Transact-SQL 语句和查询的详细信息,请参阅教程:编写 Transact-SQL 语句

新建数据库

以下步骤创建一个名为 TestDB 的新数据库。

  1. 在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:

    CREATE DATABASE TestDB;
    
  2. 在下一行中,编写一个查询以返回服务器上所有数据库的名称:

    SELECT Name from sys.databases;
    
  3. 前两个命令没有立即执行。 必须在新行中键入 GO 才能执行以前的命令:

    GO
    

插入数据

接下来创建一个新表 dbo.Inventory,然后插入两个新行。

  1. 在 sqlcmd 命令提示符中,将上下文切换到新的 TestDB 数据库:

    USE TestDB;
    
  2. 创建名为 dbo.Inventory 的新表:

    CREATE TABLE dbo.Inventory (
       id INT, name NVARCHAR(50),
       quantity INT
    );
    
  3. 将数据插入新表:

    INSERT INTO dbo.Inventory VALUES (1, 'banana', 150);
    INSERT INTO dbo.Inventory VALUES (2, 'orange', 154);
    
  4. 要执行上述命令的类型 GO

    GO
    

选择数据

现在,运行查询以从 dbo.Inventory 表返回数据。

  1. 通过 sqlcmd 命令提示符输入查询,以返回 dbo.Inventory 表中数量大于 152 的行:

    SELECT * FROM dbo.Inventory
    WHERE quantity > 152;
    
  2. 执行此命令:

    GO
    

退出 sqlcmd 命令提示符

要结束 sqlcmd 会话,请键入 QUIT

QUIT

性能最佳做法

在 Linux 上安装 SQL Server 后,请查看配置 Linux 和 SQL Server 以提高生产性能的最佳做法。 有关详细信息,请参阅 Linux 上的 SQL Server 的性能最佳做法和配置指南

跨平台数据工具

除“sqlcmd”以外,还可以使用以下跨平台工具来管理 SQL Server :

工具 说明
Azure Data Studio 跨平台 GUI 数据库管理实用程序。
Visual Studio Code 一种跨平台 GUI 代码编辑器,它使用 mssql 扩展运行 Transact-SQL 语句。
PowerShell Core 基于 cmdlet 的跨平台自动化和配置工具。
mssql-cli 用于运行 Transact-SQL 命令的跨平台命令行接口。

从 Windows 连接

Windows 上的 SQL Server 工具连接到 Linux 上的 SQL Server 实例,操作方式与连接到任何远程 SQL Server 实例一样。

如果有一台可以连接到 Linux 计算机的 Windows 计算机,请从运行 sqlcmd 的 Windows 命令提示符尝试执行本主题中的相同步骤。 必须使用目标 Linux 计算机名称或 IP 地址,而不是 localhost,并确保 TCP 端口 1433 已在 SQL Server 计算机上打开。 如果从 Windows 进行连接存在任何问题,请参阅连接故障排除建议

有关在 Windows 上运行,但连接到 Linux 上的 SQL Server 的其他工具,请参阅:

其他部署方案

有关其他安装方案,请参阅以下资源:

  • 升级:了解如何升级 Linux 版 SQL Server 的现有安装
  • 卸载:在 Linux 上卸载 SQL Server
  • 无人参与的安装:了解如何编写无提示安装脚本
  • 脱机安装:了解如何手动下载脱机安装程序包

有关常见问题的解答,请参阅 Linux 上的 SQL Server 常见问题解答

后续步骤