一:介绍背景

微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版。前几日在美国奥兰多召开的微软 Ignite 2017 大会上,微软宣布 SQL Server 2017 将于10月2日正式发布。

现在,SQL Server 2017 已正式发布。这是 SQL Server 历史上首次同时发布 Windows 和 Linux 版。此外,微软还发布了能使用 Docker 部署的容器版本。

对 SQL Server 而言,这是其历史上具有里程碑意义的一步,因为这是跨出 Windows 的第一个版本,标志着 SQL Server 在 Linux 平台上首次可用。

SQL Server 2017 新版本成为第一个云端、跨不同操作系统的版本,包括 Linux、Docker。

  • SQL Server 2017 目前支持的 Linux 发行版包括:Red Hat Enterprise Linux(RHEL), SUSE Linux Enterprise Server 和 Ubuntu。

  • SQL Server 2017 支持 Docker 企业版,Kubernetes 和 OpenShift 这三大容器平台。

随着云端运算越来越普及,微软的 Azure 也可以运行 SQL Server 2017,能让开发者用他们熟悉的开发语言和环境,来制作他们想要的应用,同时兼顾安全性和效能。

SQL Server 2017 支持使用 R 和 Python 的分析方法,来做资料库内的机器学习,意味着不必迁移资料,省下不少时间。

新推出的 SQL Data Warehouse 则针对资料在云端运算的效能问题,大幅优化运算表现。微软预计秋季会推出预览版。

针对不同公有云之间迁移服务器,是令不少人头痛的事情。微软推出 Azure Database Migration Service,提供近 0 时差无痛的迁移方案,不必额外花费,就可以无痛迁移而且程序代码不必改动。

还有一些值得关注的新特性:

  • 图数据分析功能将使客户能够使用图形数据存储和查询语言扩展来使用原生的图形查询语法,以便在高度互连的数据中发现新的关系。

  • 自适应查询处理是 SQL Server 中新增的一系列功能,可为数据库带来更智能的体验。例如,SQL Server 中的 Adaptive Memory Grants 跟踪并了解对给定的查询使用了多少内存,以调整内存的使用。

  • Automatic Plan Correction 通过查找和修正性能的回归来确保持续的性能。

SQL Server 2017 的核心功能在 Windows 和 Linux 上保持一致,但有少部分依赖于 Windows 功能的特性没有提供给 Linux(例如集群支持和集成 Windows 身份验证)。

更多内容请查看发布说明

下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads

http://www.oschina.net/news/89263/sql-server-2017-on-windows-linux-and-docker-ga

二:Linux 上的 SQL Server
的安装指南

注:本文来源于《Linux 上的 SQL Server 的安装指南


本主题适用于: SQL Server (仅限
Linux)Azure SQL 数据库Azure SQL 数据仓库并行数据仓库

本文提供有关安装、 更新和卸载 SQL
Server 2017 Linux 上的指导。

提示

本指南 coves
几种部署方案。 如果您仅查找的分步安装说明,跳转到快速入门教程之一:

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

支持的平台

Red Hat Enterprise Linux
(RHEL)、 SUSE Linux Enterprise Server (SLES) 和 Ubuntu 上支持 SQL Server
2017。 它还支持作为 Docker 映像,可以在
Docker 的 Windows/mac。 或在 Linux 上的 Docker 引擎运行

平台 受支持的版本 获取
Red Hat Enterprise
Linux
7.3 或
7.4
获取 RHEL
7.4
SUSE
Linux Enterprise Server
v12 SP2 获取 SLES v12
SP2
Ubuntu 16.04 获取 Ubuntu
16.04
Docker
引擎
1.8+ 获取
Docker

Microsoft 还支持部署和使用
OpenShift 和 Kubernetes 来管理 SQL Server 容器。

备注

SQL Server 经过测试且支持在 Linux
上的前面列出的分发版。 如果您选择不受支持的操作系统上安装 SQL
Server,请查看的支持策略一部分Microsoft SQL Server
的技术支持策略
若要了解支持影响。

系统要求

SQL Server 2017 具有以下适用于
Linux 的系统要求:

内存 2 GB
“文件系统” XFSEXT4 (其他文件系统,如BTRFS,均不受支持)
磁盘空间 6 GB
处理器速度 2 GHz
处理器核心 2 个核心
处理器类型 仅 x64
兼容

如果您使用网络文件系统
(NFS)
 在生产中,远程共享,请注意以下支持要求:

  • 使用 NFS 版本4.2
    或更高版本
    。 较旧版本的 NFS 不支持所需的功能,例如
    fallocate 和稀疏文件创建,普遍适用于现代文件系统。
  • 仅定位 /var/opt/mssql
    NFS 装入的目录。 不支持其他文件,如 SQL Server
    系统二进制文件。
  • 请确保装载的远程共享时,NFS 客户端,使用
    nolock 选项。

配置源存储库

当您安装或升级 SQL Server
时,可从你配置的 Microsoft 存储库获取最新版本的 SQL Server 2017。 使用快速入门教程累积更新
(CU)
 存储库。 但您可以改为配置GDR存储库。 存储库以及如何配置它们的详细信息,请参阅Linux 上的 SQL Server 配置存储库

重要

如果您以前安装的 CTP 或 SQL Server
2017 的 RC 版本,必须删除预览存储库并注册一个常规正式版 (GA)。 有关详细信息,请参阅Linux 上的 SQL Server
配置存储库

安装 SQL Server

从命令行,可以在 Linux 上安装 SQL
Server。 有关说明,请参阅以下快速入门之一:

在安装后,请考虑进行其他配置更改,以获得最佳性能。 有关详细信息,请参阅的性能最佳实践和 Linux 上的 SQL Server
配置准则

更新 SQL Server

若要更新mssql
server
打包到最新版本,请使用以下命令基于你的平台之一:

平台 包更新命令
RHEL sudo yum update mssql-server
SLES sudo zypper update
mssql-server
Ubuntu sudo apt-get update
sudo apt-get install
mssql-server

这些命令将下载最新的包并替换
/opt/mssql/ 下的/opt/mssql/。 用户生成的数据库和系统数据库不受此操作。

回滚 SQL Server

回滚或降级到以前的版本的 SQL
Server,使用以下步骤:

  1. 确定想要降级到 SQL Server
    包的版本号。 有关包号码的列表,请参阅发行说明

  2. 降级到早期版本的 SQL
    Server。 在以下命令,将为<version_number>使用您在第一步中标识的
    SQL Server 版本号。

    平台 包更新命令
    RHEL sudo yum downgrade
    mssql-server-<version_number>.x86_64
    SLES sudo zypper install --oldpackage
    mssql-server=<version_number>
    Ubuntu sudo apt-get install
    mssql-server=<version_number>

    sudo systemctl start
    mssql-server

备注

它仅支持要降级到的相同主版本,如 SQL
Server 2017 中的发行版。

检查已安装的 SQL Server
版本

若要验证你的当前版本和版本的 Linux 上的
SQL Server,请使用以下过程:

  1. 如果尚未安装,请安装SQL Server 命令行工具

  2. 使用sqlcmd运行
    TRANSACT-SQL 命令,显示你的 SQL Server 版本和版本。

    bash复制
    sqlcmd -S localhost -U SA -Q 'select @@VERSION'

卸载 SQL Server

若要删除mssql
server
包在 Linux 上,请使用以下命令基于你的平台之一:

平台 包删除命令
RHEL sudo yum remove mssql-server
SLES sudo zypper remove
mssql-server
Ubuntu sudo apt-get remove
mssql-server

删除包不会删除生成的数据库文件。 如果你想要删除的数据库文件,使用以下命令:

bash复制
sudo rm -rf /var/opt/mssql/

无人参与的安装

可以按以下方式来执行无人参与的安装:

  • 请按照初始步骤中快速入门注册存储库并安装 SQL Server。
  • 在运行时mssql-conf setup,将环境变量,并使用-n(无提示)
    选项。

下面的示例配置与 SQL Server 的
Developer edition MSSQL_PID环境变量。 它还会接受 EULA (ACCEPT_EULA),并设置 SA 用户密码 (MSSQL_SA_PASSWORD)。 -n参数执行进行无提示的安装的配置值存在于环境变量。

bash复制
sudo MSSQL_PID=Developer ACCEPT_EULA=Y MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' /opt/mssql/bin/mssql-conf -n setup

此外可以创建执行其他操作的脚本。 例如,可以安装其他 SQL Server
包。

有关更详细的示例脚本,请参阅下面的示例:

脱机安装

如果你的 Linux
计算机无法访问中使用的在线存储库快速入门,可以直接下载包文件。 这些包位于 Microsoft 存储库,https://packages.microsoft.com

提示

如果使用快速入门中的步骤已成功安装,您不需要下载或手动安装 SQL Server
包。 本部分仅适用于脱机方案。

  1. 下载你的平台的数据库引擎包。 包详细信息部分中找到包下载链接发行说明

  2. 将下载的包移到
    Linux 计算机
    。 如果使用另一台计算机下载包,将包移到 Linux
    计算机的一种方法是使用scp命令。

  3. 安装数据库引擎包。 使用以下命令基于你的平台之一。 在此示例包文件的名称替换为你下载的确切名称。

    平台 包安装命令
    RHEL sudo yum localinstall
    mssql-server_versionnumber.x86_64.rpm
    SLES sudo zypper install
    mssql-server_versionnumber.x86_64.rpm
    Ubuntu sudo dpkg -i
    mssql-server_versionnumber_amd64.deb

    备注

    您还可以使用安装 RPM 包 (RHEL 和
    SLES)rpm -ivh命令,但在上表中的命令会自动安装依赖项如果可从已批准的存储库。

  4. 解决缺少的依赖项: 必须在此时缺少依赖项。 如果没有,可以跳过此步骤。 在
    Ubuntu,如果你有权访问已批准存储库包含这些依赖项,最简单的解决方案是使用apt-get -f install命令。 此命令还完成了 SQL Server
    的安装。 若要手动检查依赖项,请使用以下命令:

    平台 依赖项列表命令
    RHEL rpm -qpR
    mssql-server_versionnumber.x86_64.rpm
    SLES rpm -qpR
    mssql-server_versionnumber.x86_64.rpm
    Ubuntu dpkg -I
    mssql-server_versionnumber_amd64.deb

    在解决缺少的依赖项之后, 尝试再次安装 mssql
    server 包。

  5. 完成
    SQL Server 安装程序
    。 使用mssql
    conf
    完成 SQL Server 安装程序:

    bash复制
    sudo /opt/mssql/bin/mssql-conf setup

授权和定价

SQL Server 许可适用于 Linux 和
Windows 相同。 详细了解 SQL Server
许可和定价,请参阅授权的 SQL Server 如何

可选的 SQL Server
功能

安装完成后,您也可以安装,或者启用 SQL
Server 的可选功能。

 获取帮助

三:快速入门: 安装 SQL Server 和 Red Hat 上创建数据库

本主题适用于: SQL Server (仅限
Linux)Azure SQL 数据库Azure SQL 数据仓库并行数据仓库

在本快速入门,首先安装 SQL Server 2017 上 Red Hat Enterprise Linux
(RHEL) 7.3 +。 然后使用 sqlcmd 连接,以创建第一个数据库并运行查询。

提示

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

必要條件

您必须具有 RHEL 7.3 或 7.4 计算机至少
2 GB
的内存。

若要在自己的计算机上安装 Red Hat Enterprise Linux,请转到http://access.redhat.com/products/red-hat-enterprise-linux/evaluation。 此外可以在
Azure 中创建 RHEL 虚拟机。 请参阅创建和使用 Azure CLI 管理 Linux Vm,并使用--image RHEL对的调用中az vm create

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

安装 SQL Server

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

重要

如果以前已安装的 CTP 或 SQL Server 2017 的 RC 版本,必须先注册 GA
存储库之一之前删除旧的存储库。 有关详细信息,请参阅存储库从预览存储库更改为 GA 存储库

  1. 下载 Microsoft SQL Server Red Hat
    存储库配置文件:

    bash复制
    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo

    备注

    这是累积更新 (CU) 存储库。 有关存储库的选项和它们之间的差异的详细信息,请参阅Linux 上的 SQL Server
    配置存储库

  2. 运行以下命令,安装 SQL Server:

    bash复制
    sudo yum install -y mssql-server
  3. 软件包安装完成后,运行mssql
    conf 安装
    命令并按照操作提示设置 SA 密码,并选择你的版本。

    bash复制
    sudo /opt/mssql/bin/mssql-conf setup

    提示

    如果在本教程中尝试 SQL Server 2017,自由地获得许可的以下版本: Evaluation、
    Developer 和 Express。

    备注

    请确保为 SA 帐户指定强密码(最少 8
    个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。

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

    bash复制
    systemctl status mssql-server
  5. 若要允许远程连接,请在 RHEL 上打开防火墙上的 SQL Server
    端口。 默认的 SQL Server 端口为 TCP
    1433。 如果使用的FirewallD对于防火墙中,可以使用以下命令:

    bash复制
    sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
    sudo firewall-cmd --reload

在此情况下,SQL Server 在 RHEL 计算机上运行并已准备好使用

安装 SQL Server 命令行工具

若要创建数据库时,需要使用一种工具,可以在 SQL Server 上运行的 Transact SQL
语句进行连接。 以下是 SQL Server 命令行工具: sqlcmdbcp

  1. 下载 Microsoft Red Hat 存储库配置文件。

    bash复制
    sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
  2. 如果你有旧版mssql
    工具
    安装,请删除任何较旧的 unixODBC 包。

    bash复制
    sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
  3. 运行以下命令以安装mssql
    工具
    使用 unixODBC 开发人员包。

    bash复制
    sudo yum install -y mssql-tools unixODBC-devel
  4. 为方便起见,添加/opt/mssql-tools/bin/到你的PATH境变量。 这使您无需指定完整路径运行工具。 在登录会话和交互式/非登录会话中运行以下命令以修改PATH

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

本地连接

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

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

    bash复制
    sqlcmd -S localhost -U SA -P '<YourPassword>'

    提示

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

    提示

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

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

  3. 如果连接失败,请首先尝试根据错误消息诊断问题。 然后查看连接故障排除建议

创建和查询数据

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

新建数据库

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

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

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

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

    SQL复制
    GO

提示

若要详细了解如何编写 Transact-SQL 语句和查询,请参阅教程:编写 Transact-SQL 语句

插入数据

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

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

    SQL复制
    USE TestDB
  2. 创建名为 Inventory 的新表:

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

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

    SQL复制
    GO

选择数据

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

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

    SQL复制
    SELECT * FROM Inventory WHERE quantity > 152;
  2. 执行命令:

    SQL复制
    GO

退出 sqlcmd 命令提示符

要结束 sqlcmd 会话,请键入 QUIT

SQL复制
QUIT

性能最佳实践

在 Linux 上安装 SQL Server 后, 查看配置 Linux 和 SQL Server
来提高生产方案的性能的最佳做法。 有关详细信息,请参阅的性能最佳实践和 Linux 上的 SQL Server
配置准则

跨平台数据工具

除了sqlcmd,可以使用以下跨平台工具来管理 SQL
Server:

SQL
Server Operations Studio
跨平台 GUI 数据库管理实用程序。
mssql-cli 用于运行 TRANSACT-SQL
命令的跨平台命令行界面。
Visual Studio
Code
运行 TRANSACT-SQL 语句,mssql 扩展通过一个跨平台 GUI
代码编辑器。

从 Windows 连接

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

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

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

其他部署方案

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

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

提示

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

四:快速入门: 安装 SQL Server 并在
Ubuntu 上创建数据库

本主题适用于: SQL Server (仅限
Linux)Azure SQL 数据库Azure SQL 数据仓库并行数据仓库

在本快速入门,首先安装 SQL Server
2017 在 Ubuntu 16.04 上。 然后使用 sqlcmd 连接,以创建第一个数据库并运行查询。

提示

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

必要條件

您必须具有的 Ubuntu 16.04
计算机至少 2 GB的内存。

若要在自己的计算机上安装 Ubuntu,请转到http://www.ubuntu.com/download/server。 此外可以在
Azure 中创建 Ubuntu 虚拟机。 请参阅创建和管理 Linux Vm 使用 Azure CLI

备注

在此期间,适用于 Linux 的 Windows 子系统作为安装目标不支持 Windows
10。

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

安装 SQL Server

若要在 Ubuntu 上配置 SQL Server
,在终端中运行以下命令安装mssql
server
包。

重要

如果以前已安装的 CTP 或 SQL Server
2017 的 RC 版本,必须先注册 GA 存储库之一之前删除旧的存储库。 有关详细信息,请参阅存储库从预览存储库更改为 GA 存储库

  1. 导入公共存储库 GPG
    密钥:

    bash复制
    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
  2. 注册 Microsoft SQL Server
    Ubuntu 存储库:

    bash复制
    sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"

    备注

    这是累积更新 (CU)
    存储库。 有关存储库的选项和它们之间的差异的详细信息,请参阅Linux 上的 SQL Server
    配置存储库

  3. 运行以下命令,安装 SQL
    Server:

    bash复制
    sudo apt-get update
    sudo apt-get install -y mssql-server
  4. 软件包安装完成后,运行mssql
    conf 安装
    命令并按照操作提示设置 SA 密码,并选择你的版本。

    bash复制
    sudo /opt/mssql/bin/mssql-conf setup

    提示

    如果在本教程中尝试 SQL Server
    2017,自由地获得许可的以下版本: Evaluation、 Developer 和 Express。

    备注

    请确保为 SA 帐户指定强密码(最少 8
    个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。

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

    bash复制
    systemctl status mssql-server
  6. 如果你打算远程连接,你可能还需要打开防火墙上的
    SQL Server TCP 端口 (默认值为 1433)。

在此情况下,SQL Server 在 Ubuntu
计算机上运行并已准备好使用 !

安装 SQL Server
命令行工具

若要创建数据库时,需要使用一种工具,可以在 SQL
Server 上运行的 Transact SQL 语句进行连接。 以下是 SQL Server
命令行工具: sqlcmdbcp

使用以下步骤来安装mssql
工具
Ubuntu 上。

  1. 导入公共存储库 GPG
    密钥。

    bash复制
    curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
  2. 注册 Microsoft Ubuntu
    存储库。

    bash复制
    curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
  3. 更新源列表,并使用 unixODBC
    开发人员包运行安装命令。

    bash复制
    sudo apt-get update
    sudo apt-get install mssql-tools unixodbc-dev

    备注

    若要更新到最新版mssql
    工具
    运行以下命令:

    bash复制
    sudo apt-get update
    sudo apt-get install mssql-tools
  4. 可选: 添加/opt/mssql-tools/bin/到你路径bash shell 中的环境变量。

    若要使sqlcmd/bcp可从登录会话的
    bash shell 访问修改你路径中 ~/.bash_profile文件使用以下命令:

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

    若要使sqlcmd/bcp能从交互式/非登录会话,bash
    shell 访问修改路径中 ~/.bashrc文件使用以下命令:

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

本地连接

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

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

    bash复制
    sqlcmd -S localhost -U SA -P '<YourPassword>'

    提示

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

    提示

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

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

  3. 如果连接失败,请首先尝试根据错误消息诊断问题。 然后查看连接故障排除建议

创建和查询数据

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

新建数据库

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

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

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

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

    SQL复制
    GO

提示

若要详细了解如何编写 Transact-SQL
语句和查询,请参阅教程:编写 Transact-SQL 语句

插入数据

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

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

    SQL复制
    USE TestDB
  2. 创建名为 Inventory 的新表:

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

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

    SQL复制
    GO

选择数据

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

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

    SQL复制
    SELECT * FROM Inventory WHERE quantity > 152;
  2. 执行命令:

    SQL复制
    GO

退出 sqlcmd
命令提示符

要结束 sqlcmd
会话,请键入 QUIT

SQL复制
QUIT

性能最佳实践

在 Linux 上安装 SQL Server 后,
查看配置 Linux 和 SQL Server 来提高生产方案的性能的最佳做法。 有关详细信息,请参阅的性能最佳实践和 Linux 上的 SQL Server
配置准则

跨平台数据工具

除了sqlcmd,可以使用以下跨平台工具来管理
SQL Server:

SQL Server Operations
Studio
跨平台 GUI
数据库管理实用程序。
mssql-cli 用于运行 TRANSACT-SQL
命令的跨平台命令行界面。
Visual Studio
Code
运行 TRANSACT-SQL
语句,mssql 扩展通过一个跨平台 GUI 代码编辑器。

从 Windows 连接

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

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

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

其他部署方案

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

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

提示

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

五:快速入门: 使用 Docker 运行 SQL
Server 2017 容器映像

本主题适用于: SQL Server (仅限
Linux)Azure SQL 数据库Azure SQL 数据仓库并行数据仓库

在本快速入门教程中,你使用 Docker
请求和运行 SQL Server 2017 容器映像 mssql
server linux
。 然后使用 sqlcmd 连接,以创建第一个数据库并运行查询。

此映像包含在 Linux(基于 Ubuntu
16.04)上运行的 SQL Server。 它可与适用于 Linux 的 Docker 引擎
1.8 以上版本或适用于 Mac/Windows 的 Docker 配合使用。

备注

本快速入门专门重点介绍
mssql-server-linux 映像的使用。 虽然未介绍 Windows
映像,但可在 mssql-server-windows-developer Docker
中心页
上找到关于它的详细信息。

Prerequisites

  • 适用于支持的任一 Linux 分发版的
    Docker 引擎 1.8 以上版本,或适用于 Mac/Windows 的 Docker。 有关详细信息,请参阅 Install Docker(安装 Docker)。
  • 至少 2 GB
    的磁盘空间
  • 至少 2 GB 的
    RAM
  • Linux 上的 SQL Server
    的系统要求

请求和运行容器映像

  1. 从 Docker Hub 中拉出 SQL
    Server 2017 Linux 容器映像。

    bash复制
    sudo docker pull microsoft/mssql-server-linux:2017-latest
    PowerShell复制
    docker pull microsoft/mssql-server-linux:2017-latest

    前一个命令请求最新的 SQL Server
    2017 容器映像。 如果想请求某个特定映像,需添加一个冒号和标记名称(例如 microsoft/mssql-server-linux:2017-GA。 要查看所有可用映像,请参阅 mssql-server-linux Docker 中心页

    在本文中,bash 命令sudo使用。 在 MacOS 上,sudo可能不需要。 在 Linux
    上,如果不想要使用sudo若要运行
    Docker,可以配置docker组,并将用户添加到该组。 有关详细信息,请参阅安装后步骤适用于
    Linux

  2. 要使用 Docker 运行容器映像,可以从
    Bash Shell (Linux/macOS) 或提升的 PowerShell 命令提示符使用以下命令。

    bash复制
    sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' \
    -p 1433:1433 --name sql1 \
    -d microsoft/mssql-server-linux:2017-latest
    PowerShell复制
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong!Passw0rd>" `
    -p 1433:1433 --name sql1 `
    -d microsoft/mssql-server-linux:2017-latest

    备注

    密码应符合 SQL Server
    默认密码策略,否则容器无法设置 SQL Server,将停止工作。 默认情况下,密码必须为至少 8
    个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。 你可以通过执行 docker
    logs
     命令检查错误日志。

    备注

    默认情况下,这会创建一个使用 SQL Server
    2017 开发人员版的容器。 在容器中运行生产版本的过程略有不同。有关详细信息,请参阅运行生产容器映像

    下表对前一个 docker run 示例中的参数进行了说明:

    参数 Description
    -e
    'ACCEPT_EULA=Y'
    将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server
    映像的必需设置。
    -e
    SA_PASSWORD =<YourStrong !Passw0rd>
    指定至少包含 8
    个字符且符合 SQL Server 密码要求的强密码。 SQL Server
    映像的必需设置。
    -p
    1433:1433
    建立主机环境(第一个值)上的 TCP
    端口与容器(第二个值)中 TCP 端口的映射。 在此示例中,SQL Server 侦听容器中的
    TCP 1433 并公开的端口 1433,在主机上。
    --name
    sql1
    为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。
    microsoft/mssql-server-linux:2017-latest SQL Server 2017 Linux
    容器映像。
  3. 要查看 Docker
    容器,请使用 docker ps 命令。

    bash复制
    sudo docker ps -a
    PowerShell复制
    docker ps -a

    将看到与如下屏幕截图相似的输出:

  4. 如果“状态”列显示“正常运行”,则 SQL
    Server 将在容器中运行,并侦听“端口”列中指定的端口。 如果 SQL Server
    容器的“状态”列显示“已退出”,则参阅配置指南的疑难解答部分

-h(主机名)参数也非常有用,但为了简单起见,本教程中不使用它。 这会将容器的内部名称更改为一个自定义值。 也就是以下 Transact-SQL
查询中返回的名称:

SQL复制
SELECT @@SERVERNAME,
SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
SERVERPROPERTY('MachineName'),
SERVERPROPERTY('ServerName')

将 -h 和 --name 设为相同的值是一种很好的方法,可以轻松地识别目标容器。

更改 SA 密码

SA 帐户是安装过程中在 SQL Server
实例上创建的系统管理员。 创建 SQL Server
容器后,通过在容器中运行 echo $MSSQL_SA_PASSWORD,可发现指定的 MSSQL_SA_PASSWORD 环境变量。 出于安全考虑,请考虑更改 SA 密码。

  1. 选择 SA
    用户要使用的强密码。

  2. 使用 docker exec 运行sqlcmd,以使用 Transact-SQL 更改密码。 将 <YourStrong!Passw0rd> 和 <YourNewStrong!Passw0rd> 替换为自己的密码值。

    bash复制
    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
    -S localhost -U SA -P '<YourStrong!Passw0rd>' \
    -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong!Passw0rd>"'
    PowerShell复制
    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
    -S localhost -U SA -P "<YourStrong!Passw0rd>" `
    -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong!Passw0rd>'"

连接到 SQL Server

下列步骤在容器内部使用 SQL Server
命令行工具 sqlcmd 来连接 SQL
Server。

  1. 使用 docker exec -it 命令在运行的容器内部启动交互式 Bash Shell。 在下面的示例中,sql1 是在创建容器时由 --name 参数指定的名称。

    bash复制
    sudo docker exec -it sql1 "bash"
    PowerShell复制
    docker exec -it sql1 "bash"
  2. 一旦位于容器内部,使用 sqlcmd
    进行本地连接。 默认情况下,sqlcmd
    不在路径之中,因此需要指定完整路径。

    bash复制
    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'

    提示

    可以省略命令行上提示要输入的密码。

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

创建和查询数据

以下部分将引导你使用 sqlcmd 和
Transact-SQL 完成新建数据库、添加数据并运行简单查询的整个过程。

新建数据库

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

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

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

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

    SQL复制
    GO

插入数据

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

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

    SQL复制
    USE TestDB
  2. 创建名为 Inventory 的新表:

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

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

    SQL复制
    GO

选择数据

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

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

    SQL复制
    SELECT * FROM Inventory WHERE quantity > 152;
  2. 执行命令:

    SQL复制
    GO

退出 sqlcmd
命令提示符

  1. 要结束 sqlcmd
    会话,请键入 QUIT

    SQL复制
    QUIT
  2. 要在容器中退出交互式命令提示,请键入 exit。 退出交互式 Bash Shell
    后,容器将继续运行。

从容器外连接

还可以从支持 SQL 连接的任何
Linux、Windows 或 macOS 外部工具连接到 Docker 计算机上的 SQL Server 实例。

以下步骤在容器外使用 sqlcmd 连接在容器中运行的
SQL Server。 这些步骤假定你已在容器外安装了 SQL Server
命令行工具。 使用其他工具时,同样的原则依然适用,但连接过程因工具而异。

  1. 查找承载容器的计算机的 IP
    地址。 在 Linux
    上,使用 ifconfig 或 ip addr。在 Windows
    上,使用 ipconfig

  2. 运行 sqlcmd,指定 IP
    地址和映射容器中的端口 1433 的端口。 在此示例中,这是同一个端口,1433,在主机上。 如果主机计算机上指定其他映射的端口,你将在此处使用它。

    bash复制
    sqlcmd -S 10.3.2.4,1433 -U SA -P '<YourNewStrong!Passw0rd>'
    PowerShell复制
    sqlcmd -S 10.3.2.4,1433 -U SA -P "<YourNewStrong!Passw0rd>"
  3. 运行 Transact-SQL
    命令。 完成后,键入 QUIT

连接到 SQL Server
的其他常见工具包括:

删除容器

如果想删除本教程中使用的 SQL Server
容器,请运行以下命令:

bash复制
sudo docker stop sql1
sudo docker rm sql1
PowerShell复制
docker stop sql1
docker rm sql1

警告

停止并永久删除容器会删除容器中的所有 SQL
Server 数据。 如果你需要保留数据,请在容器外创建并复制备份文件或使用容器数据暂留技术

Docker 演示

尝试对 Docker 使用 SQL Server
容器映像后,你可能想知道如何 Docker 是如何用于改进开发和测试的。 下面的视频介绍如何在持续集成和部署方案中使用
Docker。

后续步骤

有关如何将数据库备份文件还原到容器中的教程,请参阅在 Linux Docker 容器中还原 SQL Server
数据库
。 要浏览其他方案(例如运行多个容器、数据暂存和疑难解答),请参阅在 Docker 上配置 SQL Server 2017
容器映像

并且,请查看 mssql-docker GitHub
存储库
,了解资源、反馈和已知问题。

Linux 上的 SQL Server 2017 的安装指南的更多相关文章

  1. 在Red Hat Enterprise Linux 7.3上安装SQL Server 2017

    必要条件: 1.在此快速安装过程中,您需要安装SQL Server 2017或SQL Server 2019上Red Hat Enterprise Linux (RHEL) 7.3 +.然后使用sql ...

  2. Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的 ...

  3. Linux Centos下SQL Server 2017安装和配置

    说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境 ...

  4. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

  5. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...

  6. Linux上的SQL Server的起步

    我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾 ...

  7. 在linux上安装 sql server for linux

    在linux上安装 sql server for linux Install SQL Server on Red Hat Enterprise Linux Install SQL Server To ...

  8. .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

    今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...

  9. Linux上的SQL Server——预告片

    大家可能都听说了,微软在几个星期前宣布发布可以在Linux上完整运行的SQL Server!如果你想看下在Linux上SQL Server如何运行,进行查询是什么样的体验,可以看下下面的视频.

随机推荐

  1. sublime text 3 3103 注册码

    —– BEGIN LICENSE —– Ryan Clark Single User License EA7E-812479 2158A7DE B690A7A3 8EC04710 006A5EEB 3 ...

  2. 【CentOS】JDK的安装

    FTP文件上传方式(推荐) # 解压 tar zxvf jdk-9_linux-x64_bin.tar.gz # 修改profile文件 sudo vi /etc/profile # 在文件结尾添加如 ...

  3. Path for IClasspathEntry must be absolute:

    关掉eclipse, 删除workspace工作目录下面的.metadata文件,看不到.metadata文件就 "ctril + H" 就可以看到了.然后重新打开eclipse, ...

  4. Web三层-UI/BLL/DAL/MODEL

    2013传智播客视频\视频\2013-05-28-EF\视频 创建4个程序集,添加引用,model添加映射, P01UI表现层--BLL+MODELP02BLL业务层--DAL+MODELP03DAL ...

  5. pwnable.kr fb

    fb-1 pt 连接到服务器,发现 有三个文件,fd脚本,fd.c脚本的源程序,flag是要看的东西,无权限 来我们分析一下源码 如果只传进去一个值,print” pass argv[1] a num ...

  6. Aizu - 2200 Mr. Rito Post Office

    题意:/*你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处.而且岛 ...

  7. SQLServer语法常用总结

    1. 有时候查看SQL的时候表名或者字段名需要加[],这是因为有时候你的表名或者字段名正好与sqlserver的保留字段重了 比如:有一个user表,直接select会报错 select * from ...

  8. BurpSuite使用笔记

    参考:Burp Suite 实战指南 Proxy模块 options--> add 设置监听地址,端口 binding 如果是作为本地浏览器代理默认(127.0.0.1:8080)就可以了. 如 ...

  9. 【转】数据库介绍(MySQL安装 体系结构、基本管理)

    [转]数据库介绍(MySQL安装 体系结构.基本管理) 第1章 数据库介绍及mysql安装 1.1 数据库简介 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新 ...

  10. 使用Let's Encrypt为网站加入SSL证书

    一直没有为网站配置过HTTPS,因为怕麻烦.不过这次工作要求,没有办法,只能硬着头皮上了. 老板提供了一个关键字,Let's Encrypt.其实最早看到这句话,我以为是一个动词,让我行动的意思.但是 ...