Choose your command shell

BashPowerShellCmd

适用对象:SQL Server(仅限 Linux)Azure SQL 数据库 Azure SQL 数据仓库 并行数据仓库

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

 提示

若要试用 SQL Server 2019 预览版映像,请参阅本文的 SQL Server 2019 预览版。

此映像包含在 Linux 上运行的 SQL Server(基于 Ubuntu 16.04)。 它可与 Linux 上或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+ 配合使用。 本快速入门专门介绍 linux 上 SQL Server 映像的使用。 虽然未介绍 Windows 映像,但可在 mssql-server-windows-developer Docker 中心页上找到关于它的详细信息。

先决条件

  • 任何受支持的 Linux 分发版上或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。 有关详细信息,请参阅 Install Docker(安装 Docker)。
  • Docker overlay2 存储驱动程序。 这是大多数用户的默认设置。 如果发现自己未使用此存储提供程序并且需要进行更改,请参阅 docker 文档中有关配置 overlay2 的说明和警告。
  • 至少 2 GB 的磁盘空间。
  • 至少 2 GB 的 RAM。
  • Linux 上的 SQL Server 的系统要求。

拉取并运行容器映像

在开始执行以下步骤之前,请确保已在本文顶部选择了首选的 shell(bash、PowerShell 或 cmd)。

  1. 从 Microsoft 容器注册表中拉取 SQL Server 2017 Linux 容器映像。

    bash复制

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    

    提示

    若要试用 SQL Server 2019 预览版映像,请参阅本文的 SQL Server 2019 预览版。

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

    对于本文中的 bash 命令,将使用 sudo。 在 MacOS 上,可能不需要 sudo。 在 Linux 上,如果不想使用 sudo 来运行 Docker,可以配置一个 docker 组,并将用户添加到该组。 有关详细信息,请参阅 Post-installation steps for Linux(适用于 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 mcr.microsoft.com/mssql/server:2017-latest
    

    备注

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

    备注

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

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

    参数 描述
    -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 为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。
    mcr.microsoft.com/mssql/server:2017-latest SQL Server 2017 Linux 容器映像。
  3. 要查看 Docker 容器,请使用 docker ps 命令。

    bash复制

    sudo 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 $SA_PASSWORD,可发现指定的 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>"'
    

连接到 SQL Server

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

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

    bash复制

    sudo 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 工具。 有关详细信息,请参阅在 Windows 上安装 sqlcmd 或在 Linux 上安装 sqlcmd。

  3. 运行 sqlcmd,指定 IP 地址和映射容器中的端口 1433 的端口。 本例中为主机上的相同端口 1433。 如果在主机上指定了不同的映射端口,则在此处使用它。

    bash复制

    sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong!Passw0rd>"
    
  4. 运行 Transact-SQL 命令。 完成后,键入 QUIT

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

  • Visual Studio Code
  • 适用于 Windows 的 SQL Server Management Studio (SSMS)
  • Azure Data Studio
  • mssql-cli(预览版)
  • PowerShell Core

删除容器

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

bash复制

sudo docker stop sql1
sudo docker rm sql1

警告

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

Docker 演示

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

后续步骤

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

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

快速入门:使用 Docker 运行 SQL Server 容器映像相关推荐

  1. 使用 Docker 运行 SQL Server 容器映像 在Windows操作系统上,重设置密码和操作数库

    快速入门:使用 Docker 运行 SQL Server 容器映像 2020/09/07 V O G M Choose your command shell 适用于: 是SQL Server(所有支持 ...

  2. 53.Azure中CentOS的Docker里安装运行SQL Server容器

    大家熟悉SQL Server可以安装在Windows系统上,我也介绍了SQL Server可以安装在LInux上,那么今天我将给大家介绍SQL Server安装在Docker上成为容器快速运行起来 首 ...

  3. 在Azure上的Ubuntu Docker运行SQL Server

    在Azure上的Ubuntu Docker运行SQL Server 备注:Blog具有时效性, 内容随着更新会发现变化,时间是2017年5月22日 这是非常非常难于想象和相信的事情,前几天我写了SQL ...

  4. 使用Docker运行SQL Server

    现在.net core已经跨平台了,大家也都用上了linux用上了docker.跟.net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始 ...

  5. 在Windows Server 2016 Core上运行SQL Server容器

    SQL Server和容器 (SQL Server & Containers) There's a lot of buzz around containers at the moment bu ...

  6. Docker 安装 SQL Server教程

    本文教你如何快速通过Docker安装SQL Server 前置条件:服务器内存需要于2GB. 安装的版本:SQL Server2017 目录 一.拉取镜像 二.运行容器 三.进入容器 四.远程连接 五 ...

  7. 如何连接sql托管实例_如何使用Windows托管的文件共享来支持SQL Server容器

    如何连接sql托管实例 In a previous article, Automate Delivery of SQL Server Production Data Environments Usin ...

  8. Docker 部署SQL Server 2017

    Docker 部署SQL Server 2017 一.部署步骤 1.下载镜像 2.创建容器并运行 二.参考文档 一.部署步骤 1.下载镜像 代码如下(示例): sudo docker pull mcr ...

  9. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

最新文章

  1. Rancher搭建集群
  2. socket网络编程——套接字地址结构
  3. Nginx全局块的工作进程的两个指令
  4. 聊聊C语言和指针的本质
  5. ModelCoder状态机中的State逻辑
  6. 微信多开txt_1分钟教你如何实现微信多开!建议收藏!
  7. 将JSON格式的字符串转换成List集合引入gson 的jar包
  8. 字符串当id用 转换成json对象
  9. 变量的数据类型和类型转换(二)
  10. 自然语言处理Java开源包FNLP(FudanNLP)的使用
  11. DOS系统和Windows系统的联系、对比和发展历程
  12. Alipay Global API 境外支付宝接口对接
  13. Pandas操作总结
  14. Kubernetes初探
  15. python调用so库 undefind symbol_内嵌Python import时undefined symbol错误及解决 | 学步园
  16. java word模版填充_Java 数据填充到word模板中
  17. 【精】EOS智能合约:system系统合约源码分析
  18. nodejs安装和环境配置
  19. 如何快速写一个脚本文件
  20. html 清除animation,简单删除动画效果

热门文章

  1. 有4个节点可以构造出 二叉树_简单4个步骤就可以拍摄出美丽的城市夜景,赶紧试试吧...
  2. Android开发:5-3、Menu、Dialog、Fragment
  3. Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待
  4. PeekMessage
  5. 解决Redis之MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
  6. 判断url是否包含协议并添加协议(判断url是否包含协议,url添加协议头)
  7. Linux Sqlite3 基础知识
  8. Redis 与 list 相关的常用命令
  9. 从零开始学习Docker
  10. Spring配置事务的五种方式