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 上的指导。
有关常见问题的解答,请参阅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 |
“文件系统” | XFS或EXT4 (其他文件系统,如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。 有关说明,请参阅以下快速入门之一:
- 在 Red Hat Enterprise
Linux 上安装 - 在 SUSE Linux Enterprise
Server 上安装 - 在 Ubuntu
上安装 - 在 Docker
上运行 - 在 Azure 中预配 SQL
VM
在安装后,请考虑进行其他配置更改,以获得最佳性能。 有关详细信息,请参阅的性能最佳实践和 Linux 上的 SQL Server
配置准则。
更新 SQL Server
若要更新mssql
server打包到最新版本,请使用以下命令基于你的平台之一:
平台 | 包更新命令 |
---|---|
RHEL | sudo yum update mssql-server |
SLES | sudo zypper update |
Ubuntu | sudo apt-get update sudo apt-get install |
这些命令将下载最新的包并替换
/opt/mssql/ 下的/opt/mssql/
。 用户生成的数据库和系统数据库不受此操作。
回滚 SQL Server
回滚或降级到以前的版本的 SQL
Server,使用以下步骤:
确定想要降级到 SQL Server
包的版本号。 有关包号码的列表,请参阅发行说明。降级到早期版本的 SQL
Server。 在以下命令,将为<version_number>
使用您在第一步中标识的
SQL Server 版本号。平台 包更新命令 RHEL sudo yum downgrade
mssql-server-<version_number>.x86_64SLES 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,请使用以下过程:
如果尚未安装,请安装SQL Server 命令行工具。
使用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 |
Ubuntu | sudo apt-get remove |
删除包不会删除生成的数据库文件。 如果你想要删除的数据库文件,使用以下命令:
sudo rm -rf /var/opt/mssql/
无人参与的安装
可以按以下方式来执行无人参与的安装:
下面的示例配置与 SQL Server 的
Developer edition MSSQL_PID环境变量。 它还会接受 EULA (ACCEPT_EULA),并设置 SA 用户密码 (MSSQL_SA_PASSWORD)。 -n
参数执行进行无提示的安装的配置值存在于环境变量。
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
包。 本部分仅适用于脱机方案。
下载你的平台的数据库引擎包。 包详细信息部分中找到包下载链接发行说明。
将下载的包移到
Linux 计算机。 如果使用另一台计算机下载包,将包移到 Linux
计算机的一种方法是使用scp命令。安装数据库引擎包。 使用以下命令基于你的平台之一。 在此示例包文件的名称替换为你下载的确切名称。
平台 包安装命令 RHEL sudo yum localinstall
mssql-server_versionnumber.x86_64.rpmSLES sudo zypper install
mssql-server_versionnumber.x86_64.rpmUbuntu sudo dpkg -i
mssql-server_versionnumber_amd64.deb备注
您还可以使用安装 RPM 包 (RHEL 和
SLES)rpm -ivh
命令,但在上表中的命令会自动安装依赖项如果可从已批准的存储库。解决缺少的依赖项: 必须在此时缺少依赖项。 如果没有,可以跳过此步骤。 在
Ubuntu,如果你有权访问已批准存储库包含这些依赖项,最简单的解决方案是使用apt-get -f install
命令。 此命令还完成了 SQL Server
的安装。 若要手动检查依赖项,请使用以下命令:平台 依赖项列表命令 RHEL rpm -qpR
mssql-server_versionnumber.x86_64.rpmSLES rpm -qpR
mssql-server_versionnumber.x86_64.rpmUbuntu dpkg -I
mssql-server_versionnumber_amd64.deb在解决缺少的依赖项之后, 尝试再次安装 mssql
server 包。完成
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 的可选功能。
获取帮助
- UserVoice - 改进 SQL Server
的建议? - 安装和升级 - MSDN
论坛 - SQL Server Data Tools -
MSDN 论坛 - Transact-SQL - MSDN
论坛 - DBA Stack Exchange (tag
sql-server) - SQL Server 相关问题 - Stack Overflow (tag
sql-server) - 另一些关于 SQL 开发的解答 - Reddit - 有关 SQL Server 的一般讨论
- Microsoft SQL Server
许可条款和许可证信息 - 企业用户支持选项
- 请联系
Microsoft
三:快速入门: 安装 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 存储库。
下载 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
配置存储库。运行以下命令,安装 SQL Server:
bash复制sudo yum install -y mssql-server
软件包安装完成后,运行mssql
conf 安装命令并按照操作提示设置 SA 密码,并选择你的版本。bash复制sudo /opt/mssql/bin/mssql-conf setup
提示
如果在本教程中尝试 SQL Server 2017,自由地获得许可的以下版本: Evaluation、
Developer 和 Express。备注
请确保为 SA 帐户指定强密码(最少 8
个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。配置完成后,请验证服务是否正在运行:
bash复制systemctl status mssql-server
若要允许远程连接,请在 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 命令行工具: sqlcmd和bcp。
下载 Microsoft Red Hat 存储库配置文件。
bash复制sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
如果你有旧版mssql
工具安装,请删除任何较旧的 unixODBC 包。bash复制sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
运行以下命令以安装mssql
工具使用 unixODBC 开发人员包。bash复制sudo yum install -y mssql-tools unixODBC-devel
为方便起见,添加
/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 实例。
使用 SQL Server 名称 (-S),用户名 (-U) 和密码 (-P) 的参数运行
sqlcmd。 在本教程中,用户进行本地连接,因此服务器名称为localhost
。 用户名为SA
,密码是在安装过程中为 SA 帐户提供的密码。bash复制sqlcmd -S localhost -U SA -P '<YourPassword>'
提示
可以在命令行上省略密码,以收到密码输入提示。
提示
如果以后决定进行远程连接,请指定 -S 参数的计算机名称或 IP 地址,并确保防火墙上的端口 1433
已打开。如果成功,应会显示 sqlcmd 命令提示符:
1>
。如果连接失败,请首先尝试根据错误消息诊断问题。 然后查看连接故障排除建议。
创建和查询数据
下面各部分将逐步介绍如何使用 sqlcmd
新建数据库、添加数据并运行简单查询。
新建数据库
以下步骤创建一个名为 TestDB
的新数据库。
在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL
命令以创建测试数据库:SQL复制CREATE DATABASE TestDB
在下一行中,编写一个查询以返回服务器上所有数据库的名称:
SQL复制SELECT Name from sys.Databases
前两个命令没有立即执行。 必须在新行中键入
GO
才能执行以前的命令:SQL复制GO
提示
若要详细了解如何编写 Transact-SQL 语句和查询,请参阅教程:编写 Transact-SQL 语句。
插入数据
接下来创建一个新表 Inventory
,然后插入两个新行。
在 sqlcmd 命令提示符中,将上下文切换到新的
TestDB
数据库:SQL复制USE TestDB
创建名为
Inventory
的新表:SQL复制CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
将数据插入新表:
SQL复制INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
要执行上述命令的类型
GO
:SQL复制GO
选择数据
现在,运行查询以从 Inventory
表返回数据。
通过 sqlcmd 命令提示符输入查询,以返回
Inventory
表中数量大于 152 的行:SQL复制SELECT * FROM Inventory WHERE quantity > 152;
执行命令:
SQL复制GO
退出 sqlcmd 命令提示符
要结束 sqlcmd 会话,请键入 QUIT
:
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 存储库。
导入公共存储库 GPG
密钥:bash复制wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
注册 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
配置存储库。运行以下命令,安装 SQL
Server:bash复制sudo apt-get update
sudo apt-get install -y mssql-server
软件包安装完成后,运行mssql
conf 安装命令并按照操作提示设置 SA 密码,并选择你的版本。bash复制sudo /opt/mssql/bin/mssql-conf setup
提示
如果在本教程中尝试 SQL Server
2017,自由地获得许可的以下版本: Evaluation、 Developer 和 Express。备注
请确保为 SA 帐户指定强密码(最少 8
个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。配置完成后,请验证服务是否正在运行:
bash复制systemctl status mssql-server
如果你打算远程连接,你可能还需要打开防火墙上的
SQL Server TCP 端口 (默认值为 1433)。
在此情况下,SQL Server 在 Ubuntu
计算机上运行并已准备好使用 !
安装 SQL Server
命令行工具
若要创建数据库时,需要使用一种工具,可以在 SQL
Server 上运行的 Transact SQL 语句进行连接。 以下是 SQL Server
命令行工具: sqlcmd和bcp。
使用以下步骤来安装mssql
工具Ubuntu 上。
导入公共存储库 GPG
密钥。bash复制curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
注册 Microsoft Ubuntu
存储库。bash复制curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
更新源列表,并使用 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
可选: 添加
/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 实例。
使用 SQL Server 名称 (-S),用户名
(-U) 和密码 (-P) 的参数运行 sqlcmd。 在本教程中,用户进行本地连接,因此服务器名称为localhost
。 用户名为SA
,密码是在安装过程中为 SA 帐户提供的密码。bash复制sqlcmd -S localhost -U SA -P '<YourPassword>'
提示
可以在命令行上省略密码,以收到密码输入提示。
提示
如果以后决定进行远程连接,请指定 -S
参数的计算机名称或 IP 地址,并确保防火墙上的端口 1433 已打开。如果成功,应会显示 sqlcmd
命令提示符:1>
。如果连接失败,请首先尝试根据错误消息诊断问题。 然后查看连接故障排除建议。
创建和查询数据
下面各部分将逐步介绍如何使用 sqlcmd
新建数据库、添加数据并运行简单查询。
新建数据库
以下步骤创建一个名为 TestDB
的新数据库。
在 sqlcmd 命令提示符中,粘贴以下
Transact-SQL 命令以创建测试数据库:SQL复制CREATE DATABASE TestDB
在下一行中,编写一个查询以返回服务器上所有数据库的名称:
SQL复制SELECT Name from sys.Databases
前两个命令没有立即执行。 必须在新行中键入
GO
才能执行以前的命令:SQL复制GO
提示
若要详细了解如何编写 Transact-SQL
语句和查询,请参阅教程:编写 Transact-SQL 语句。
插入数据
接下来创建一个新表 Inventory
,然后插入两个新行。
在 sqlcmd
命令提示符中,将上下文切换到新的TestDB
数据库:SQL复制USE TestDB
创建名为
Inventory
的新表:SQL复制CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
将数据插入新表:
SQL复制INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
要执行上述命令的类型
GO
:SQL复制GO
选择数据
现在,运行查询以从 Inventory
表返回数据。
通过 sqlcmd
命令提示符输入查询,以返回Inventory
表中数量大于 152 的行:SQL复制SELECT * FROM Inventory WHERE quantity > 152;
执行命令:
SQL复制GO
退出 sqlcmd
命令提示符
要结束 sqlcmd
会话,请键入 QUIT
:
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
的系统要求。
请求和运行容器映像
从 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。要使用 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
容器映像。要查看 Docker
容器,请使用docker ps
命令。bash复制sudo docker ps -a
PowerShell复制docker ps -a
将看到与如下屏幕截图相似的输出:
如果“状态”列显示“正常运行”,则 SQL
Server 将在容器中运行,并侦听“端口”列中指定的端口。 如果 SQL Server
容器的“状态”列显示“已退出”,则参阅配置指南的疑难解答部分。
-h
(主机名)参数也非常有用,但为了简单起见,本教程中不使用它。 这会将容器的内部名称更改为一个自定义值。 也就是以下 Transact-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 密码。
选择 SA
用户要使用的强密码。使用
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。
使用
docker exec -it
命令在运行的容器内部启动交互式 Bash Shell。 在下面的示例中,sql1
是在创建容器时由--name
参数指定的名称。bash复制sudo docker exec -it sql1 "bash"
PowerShell复制docker exec -it sql1 "bash"
一旦位于容器内部,使用 sqlcmd
进行本地连接。 默认情况下,sqlcmd
不在路径之中,因此需要指定完整路径。bash复制/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
提示
可以省略命令行上提示要输入的密码。
如果成功,应会显示 sqlcmd
命令提示符:1>
。
创建和查询数据
以下部分将引导你使用 sqlcmd 和
Transact-SQL 完成新建数据库、添加数据并运行简单查询的整个过程。
新建数据库
以下步骤创建一个名为 TestDB
的新数据库。
在 sqlcmd 命令提示符中,粘贴以下
Transact-SQL 命令以创建测试数据库:SQL复制CREATE DATABASE TestDB
在下一行中,编写一个查询以返回服务器上所有数据库的名称:
SQL复制SELECT Name from sys.Databases
前两个命令没有立即执行。 必须在新行中键入
GO
才能执行以前的命令:SQL复制GO
插入数据
接下来创建一个新表 Inventory
,然后插入两个新行。
在 sqlcmd
命令提示符中,将上下文切换到新的TestDB
数据库:SQL复制USE TestDB
创建名为
Inventory
的新表:SQL复制CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
将数据插入新表:
SQL复制INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
要执行上述命令的类型
GO
:SQL复制GO
选择数据
现在,运行查询以从 Inventory
表返回数据。
通过 sqlcmd
命令提示符输入查询,以返回Inventory
表中数量大于 152 的行:SQL复制SELECT * FROM Inventory WHERE quantity > 152;
执行命令:
SQL复制GO
退出 sqlcmd
命令提示符
要结束 sqlcmd
会话,请键入QUIT
:SQL复制QUIT
要在容器中退出交互式命令提示,请键入
exit
。 退出交互式 Bash Shell
后,容器将继续运行。
从容器外连接
还可以从支持 SQL 连接的任何
Linux、Windows 或 macOS 外部工具连接到 Docker 计算机上的 SQL Server 实例。
以下步骤在容器外使用 sqlcmd 连接在容器中运行的
SQL Server。 这些步骤假定你已在容器外安装了 SQL Server
命令行工具。 使用其他工具时,同样的原则依然适用,但连接过程因工具而异。
查找承载容器的计算机的 IP
地址。 在 Linux
上,使用 ifconfig 或 ip addr。在 Windows
上,使用 ipconfig。运行 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>"
运行 Transact-SQL
命令。 完成后,键入QUIT
。
连接到 SQL Server
的其他常见工具包括:
- Visual Studio
Code - 适用于 Windows 的 SQL Server
Management Studio (SSMS) - SQL Server Operations
Studio(预览版) - mssql-cli(预览版)
删除容器
如果想删除本教程中使用的 SQL Server
容器,请运行以下命令:
sudo docker stop sql1
sudo docker rm sql1
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 的安装指南的更多相关文章
- 在Red Hat Enterprise Linux 7.3上安装SQL Server 2017
必要条件: 1.在此快速安装过程中,您需要安装SQL Server 2017或SQL Server 2019上Red Hat Enterprise Linux (RHEL) 7.3 +.然后使用sql ...
- 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),以及配置过程中遇到的坑的 ...
- Linux Centos下SQL Server 2017安装和配置
说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境 ...
- 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs
原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...
- Linux 上配置 SQL Server Always On Availability Group
SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...
- Linux上的SQL Server的起步
我们知道,几个星期前,微软发布了在Linux上直接运行的SQL Server第一个公开CTP版本!因此,对我来说,是时候跨界在Linux上安装我的第一个SQL安装,这样的话,我就可以在Linux上折腾 ...
- 在linux上安装 sql server for linux
在linux上安装 sql server for linux Install SQL Server on Red Hat Enterprise Linux Install SQL Server To ...
- .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库
今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...
- Linux上的SQL Server——预告片
大家可能都听说了,微软在几个星期前宣布发布可以在Linux上完整运行的SQL Server!如果你想看下在Linux上SQL Server如何运行,进行查询是什么样的体验,可以看下下面的视频.
随机推荐
- Session 起航 登录会话和注销请求 重定向和转发
[LoginServlet] @WebServlet(name="loginServlet",urlPatterns = "/login") public cl ...
- 利用PHP+MySql+Ajax操作实现年月日联动功能
PHP+MySql+Ajax实现年月日的三级联动 <!DOCTYPE html><html> <head> <meta charset=& ...
- matplotlib-2D绘图库学习目录
matplotlib的安装和 允许中文及几种字体 散点图 直线和点 子图 点的形状 条形图 堆叠条形图 直方图 颜色和样式字符串 饼状图 画多个图 画网格 线的形状 图例 坐标轴 画注释 ...
- 【Thymeleaf】Thymeleaf模板对没有结束符的HTML5标签解析出错的解决办法
解决方案 spring: thymeleaf: mode: LEGACYHTML5 <dependency> <groupId>net.sourceforge.nekohtml ...
- npm 常用命令详解(转载)
学习gulp的使用时,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块的朋友不可错过这 ...
- SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不 ...
- 加扰与加密&解扰与解密
原文:https://blog.csdn.net/yuan892173701/article/details/8743543 加扰就是改变标准电视信号的特性,在发送端按规定处理,而加密就是在加解扰系统 ...
- 【NLP CS224N笔记】Lecture 2 - Word Vector Representations: word2vec
I. Word meaning Meaning的定义有很多种,其中有: the idea that is represented by a word,phrase,etc. the idea that ...
- python模块-----pymysql
一.安装 本模块为python第三方模块,需要单独安装.作用为调用mysql接口执行模块 pip3 install pyMySql 操作步骤: #!/usr/bin/python3 import py ...
- python基础-----异常问题
---恢复内容开始--- 当发生python不知所措的错误时,python会创建一个异常对象, 如果你编写处理该异常的代码,程序将会继续运行: 如果你未对异常做任何处理,程序将会停止,并显示一个tra ...