zoukankan      html  css  js  c++  java
  • Linux 上的 SQL Server 2017 的安装指南



    一:介绍背景

    微软在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 的可选功能。

    info_tip 获取帮助





    三:快速入门: 安装 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
      

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

      Docker ps 命令输出

    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 存储库,了解资源、反馈和已知问题。

  • 相关阅读:
    深度解析U-Boot网络实现(长篇好文)
    优化嵌入式Linux的启动时间之内核
    优化嵌入式Linux的启动时间之文件系统
    Java安全之 ClassLoader类加载器
    Java 审计之xss审计要点
    Java审计之命令执行篇
    Java审计之文件操作漏洞
    Java 审计 之过滤器防御xss
    Java 审计之SSRF篇(续)
    Java 审计之SSRF篇
  • 原文地址:https://www.cnblogs.com/ios9/p/9528796.html
Copyright © 2011-2022 走看看