Linux 版本的 SQL Server 快速安装

2023-11-20

SQL Server 2017 版本已经支持 Linux 安装了,出来了很长时间,我还没有实现过在 Linux 上面的应用,包括安装和高可用配置。本文就先尝试完成 Linux 版 SQL Server 的安装。

经常在 Windows 下安装 SQL Server 失败的同学们有福了,因为按照下面的步骤,不超过 15 分钟,你就可以直接体验 SQL 开发之旅!

SQL Server 在 CentOS 上的安装

步骤:

  1. 安装镜像
  2. 执行配置文件
  3. 打开防火墙对 SQL Server 指定端口限制
  4. 安装管理工具

注意点:

1 安装库的配置:

安装镜像的时候,正确处理依赖软件包:选用的 Linux 版本是 Centos 7, 微软的官方文档中并没有给出针对 Centos 7 的安装指南,但 Centos 是基于 RedHat 衍生出来的版本,因此尝试使用 RedHat 的安装方法,应该也奏效。

固然可以离线安装 SQL Server, 只要对 SQL Server On Linux 的包依赖都自信能搞定。为了方便起见,我在这里还是坚持用了配置 Repository 的方式,让微软搞定这些依赖关系。

这里不得不提一下对 YUM 的配置了。YUM 管理的就是包依赖,其实质是对软件的依赖做本地缓存,方便安装的时候,能自动化处理包依赖关系。

配置 Installation Online Repository:

微软已经为我们配置好了 repo 文件,将其复制到 /etc/yum.repos.d下即可:

wget https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo -O /etc/yum.repos.d/mssql-server.repo
在线安装 SQL Server
yum install mssql-server -y

安装之前先配置足够的内存,过小的内存将不能顺利安装,4GB 以上够用

sqlservr: This program requires a machine with at least 3250 megabytes of memory.
Microsoft(R) SQL Server(R) setup failed with error code 1.

善后工作
/opt/mssql/bin/sqlservr-setup

根据最新的 MSDN 文档解释,设置 SA 密码和版本,应该是执行:

/opt/mssql/bin/mssql-conf setup

选择版本和设置 SA 密码 l*s6.

==思考:==

并没有指定 SQL Server 安装在 /opt/mssql 目录下,是怎么配置安装路径的?

一开始提的问题,在安装过程中已经得到了解释,因为这是默认路径。

重新启动 SQL Server Service 使其设置生效:

+--------------------------------------------------------------+
Please run 'sudo /opt/mssql/bin/mssql-conf setup'
to complete the setup of Microsoft SQL Server
+--------------------------------------------------------------+

SQL Server needs to be restarted in order to apply this setting. Please run
'systemctl restart mssql-server.service'.
  Verifying  : mssql-server-14.0.3030.27-1.x86_64
检测数据库运行状态
systemctl status mssql-server

默认情况下,Linux 的端口是被防火墙给屏蔽的,因此需要打开防火墙对端口的允许,才能使得远程客户端访问本机服务。

firewall-cmd --zone=public --add-port=1433/tcp --permanent
firewall-cmd --reload
2 安装命令行管理工具

在没有SSMS(sql server management studio)的环境中,需要安装一些可执行 SQL 的客户端工具,以便用来创建数据库对象以及操作数据。常用的工具有 sqlcmd 和 bcp.

curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
yum install -y mssql-tools unixODBC-devel

众所周知,任何命令都需要在 PATH 环境中指定路径,才能直接运行,因此需要将 mssql-tools 的执行路径添加到本地或者全局的 PATH 文件中去。路径是默认的 /opt/mssql-tools/bin/

测试 SA 账户的连接:

sqlcmd -S localhost -U SA -P '<Password>'

如果碰到连接错误,说明需要换个方式登录本机,即使用 127.0.0.1

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x102.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL ServerServer is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
sqlcmd -S 127.0.0.1 -U SA -P '<Password>'

方便快捷的安装,如果微软推出一个 community edition, 我估计就没 mysql 啥事儿了。当然是玩笑话,mysql 有其自己的特性,比如插件式存储引擎,别的数据库没有办法取代。

其他客户端工具:

除了 sqlcmd, bcp, SSMS (on Windows),还可以使用以下工具:

  • SQL Operations Studio
  • mssql-cli
  • Visual Studio Code

上述三种都可以跨平台使用。首推 SQL Server Operations Studio, 2017年11月出了第一个版本,他的优点在于可视化的 DashBoard, 平时要自己写报表来监控服务器以及数据库健康状态,现在用这个集成工具就可以实现了。

让我们感受下 SOS(SQL Operations Studio)的轻便和强大

经常安装不了 SQL Server 的朋友们,建议按照以上的步骤,15 分钟内即可完成 SQL Server 的无故障安装,开始你的 SQL 之旅!

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

安装 SQL Server 过程中,可能会遇到的一些步骤截图,给个参考:
尤其注意需要手工运行命令的地方,都有详细的路径给到

这里写图片描述

这里写图片描述

这里写图片描述

来这里一起讨论 SQL 等数据领域的技术吧

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 版本的 SQL Server 快速安装 的相关文章

  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • 如何仅将整个嵌套目录中的头文件复制到另一个目录,在复制到新文件夹后保持相同的层次结构

    我有一个目录 其中有很多头文件 h 和其他 o 和 c 文件以及其他文件 这个目录里面有很多嵌套的目录 我只想将头文件复制到一个单独的目录 并在新目录中保留相同的结构 cp rf oldDirectory newDirectory将复制所有
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • Linux 中的电源管理通知

    在基于 Linux 的系统中 我们可以使用哪些方法 最简单的方法 来获取电源状态更改的通知 例如 当计算机进入睡眠 休眠状态等时 我需要这个主要是为了在睡眠前保留某些状态 当然 在计算机唤醒后恢复该状态 您只需配置即可获得所有这些事件acp
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构

随机推荐

  • 【C++】STL中list容器内部元素的移动和交换

    文章目录 前言 一 list是什么 二 元素移动 1 插入 删除 2 切除 拼接 三 元素交换 1 元素值交换 2 元素 节点 交换 总结 前言 提示 list insert list erase list splice std iter
  • 【ESP32】反复重启

    ESP32开发 反复重启 串口输出如下所示 rst 0xc SW CPU RESET boot 0x13 SPI FAST FLASH BOOT configsip 188777542 SPIWP 0xee clk drv 0x00 q d
  • 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现

    很多用户都有这样需求 比如 点击按钮 刷新 GridView 中的数据 而不是这个页面刷新 使用简单的 XMLHttpRequest 就可以直接实现 具体代码如下 ASPX 代码 lt
  • C语言实现随机发纸牌

    C语言实现随机发纸牌 为避免重复发牌 设二维数组sign 4 13 记载是否发过纸牌 其中行下表表示花色 列下标表示点数 设字符串指针数组card n 存储随机发的n张纸牌 例如card 0 梅花2 按照以下方法以此发出每一张牌 首先产生一
  • Python异常捕获

    在 Python 中 try 和 except 语句用于捕获和处理异常 except 子句可以用来捕获不同类型的异常 Exception 这是 Python 中所有异常的基类 可以捕获几乎所有异常类型 ValueError 当函数收到不适当
  • 使用css 动画实现,水波纹的效果

    每日鸡汤 每个你想要学习的瞬间都是未来的你向自己求救 需求 实现水波纹动画效果 要求中心一个圆点 然后有3个圈 一圈一圈的向里面缩小 说实话我第一个想到了给3个圈设置不同的宽高 然后设置动画0 100 一次缩小宽高 但是 我转念一想 我是不
  • Intellisense and NAnt .build files in VS.NET

    Intellisense and NAnt build files in VS NET This has been blogged about before here and there but I wanted to share it a
  • 最大k乘积问题--动态规划

    问题 问题描述 设x是一个n位十进制整数 如果将x划分为k段 则可得到k个整数 这k个整数的乘积称为x的一个k乘积 试设计一个算法 对于给定的x和k 求出x的最大k乘积 编程任务 对于给定的x和k 编程计算x的最大k 乘积 示例 Sampl
  • 深入理解数据库事务(超详细)

    一 事务的介绍 事务是一组操作的集合 事务会把所有操作作为一个整体一起向系统提交或撤销操作请求 即这些操作要么同时成功 要么同时失败 二 事务的基本操作 2 1 事务操作方式一 例子 转账场景 张三向李四转账 1 查询张三账户余额 sele
  • mac下搭建cocos2d-x3.2开发环境

    1 软件 Xcode Ant apache ant 1 9 4 bin tar gz Jdk jdk 8u45 macosx x64 dmg 有的mac系统上没有自带 Ndk android ndk r10d darwin x86 64 b
  • 如何成为一名优秀的开发人员?

    如何成为一名优秀的开发人员 1 你不需要知道一切 没有人知道所有的细节 2 存在错误对于学习至关重要 3 谷歌搜索是一项合法的技能 4 尝试思考而不是编码 5 慎重对待教程 1 你不需要知道一切 没有人知道所有的细节 作为一名开发人员 你可
  • C++STL总结笔记(二)——仿函数(函数对象)

    文章目录 一 概念 总结 一 概念 仿函数又称函数对象 即重载了函数调用运算符 的类的对象 优势 1 仿函数对象的内部可以有自己的状态 可以实现一些其他的功能 2 函数对象可以作为参数进行传递 当仿函数类内重载的返回值是bool类型被称为谓
  • Python爬虫网易云音乐--JS逆向-补充笔记

    课程地址 https www bilibili com video BV1Mi4y147Yb up主省略掉的 用报错信息来一一回溯的方式把js文件补全的过程 主要把握的几个点 把以下部分代码找到粘贴到js中即可补全并顺利运行 CryptoJ
  • 《数据库系统概论》重点整理

    Word文档链接 https wenku baidu com view 063d7656f9c75fbfc77da26925c52cc58bd69088 第一章 数据模型的三个要素 数据结构 数据操作 完整性约束 数据库领域常用的逻辑模型
  • minikube start启动集群失败Unable to find image gcr.io/k8s-minikube/kicbase:v0.0.10

    配套视频教程 minikube带你玩转k8s集群 1 minikube启动集群 minikube start vm driver docker image mirror country cn image repository registr
  • Intel CPU5种不同的CPU频率标定方式

    作者 cici xiang 链接 https www zhihu com question 271509706 answer 364246338 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 Intel C
  • G - Ginger的NB数(二分)

    G Ginger的NB数 SDUT OnlineJudge include
  • pyopencv基础操作指南

    个人学习整理 欢迎指正 实验版本 python版本 3 6 13 opencv版本 2 4 9 1 opencv简介 官网 http docs opencv org 3 0 beta doc py tutorials py tutorial
  • python无法导入自定义类

    问题描述是python3环境 在C Python36 Lib site packages mekk xmind目录下有 init py document py id gen py和xmlutil py四个文件 但是在引入mekk xmind
  • Linux 版本的 SQL Server 快速安装

    SQL Server 2017 版本已经支持 Linux 安装了 出来了很长时间 我还没有实现过在 Linux 上面的应用 包括安装和高可用配置 本文就先尝试完成 Linux 版 SQL Server 的安装 经常在 Windows 下安装