当前位置: 首页 > news >正文

Ubuntu 上部署 Microsoft SQL Server 详细教程

Microsoft SQL Server 自 2017 年起开始支持 Linux 系统,包括 Ubuntu。本文将详细介绍如何在 Ubuntu 20.04/22.04/24.04 系统上安装和配置 Microsoft SQL Server,并验证其运行状态。

核心架构与组件

  1. 数据库引擎
    • 存储、处理和保护数据的核心组件,支持T-SQL查询、事务管理(ACID)和锁机制。
    • 关键组件:存储引擎(数据文件管理)、查询处理器(执行计划生成)、缓冲池(内存管理)。
  2. SQL Server 服务
    • SQL Server Database Engine:处理数据存储和查询。
    • SQL Server Agent:自动化任务调度(如备份、维护计划)。
    • SSIS (Integration Services):ETL工具,用于数据迁移和转换。
    • SSAS (Analysis Services):多维数据分析和数据挖掘。
    • SSRS (Reporting Services):报表生成和分发。
  3. 内存管理
    • 缓冲池(Buffer Pool):缓存数据页,减少磁盘I/O。
    • 列存储索引(Columnstore Index):优化分析查询性能。

T-SQL 编程

  1. 基础语法
    • 数据定义语言(DDL):CREATEALTERDROP(表、视图、存储过程等)。
    • 数据操作语言(DML):INSERTUPDATEDELETEMERGE
    • 数据查询语言(DQL):SELECT 结合 JOINGROUP BYHAVINGWINDOW FUNCTIONS(如 ROW_NUMBER())。
  2. 存储过程与函数
    • 存储过程:预编译的T-SQL块,支持参数输入/输出。
    • 标量函数:返回单个值(如 DATEDIFF)。
    • 表值函数:返回表结构(如 STRING_SPLIT)。
  3. 事务与错误处理
    • 事务控制:BEGIN TRANSACTIONCOMMITROLLBACK
    • 错误处理:TRY...CATCH 块,结合 ERROR_NUMBER()ERROR_MESSAGE()

性能优化

  1. 索引策略
    • 聚集索引:表数据按索引顺序存储(每表仅一个)。
    • 非聚集索引:独立于数据存储,支持覆盖索引优化。
    • 筛选索引:针对特定数据子集(如 WHERE Status = 'Active')。
  2. 查询优化
    • 执行计划分析:使用 SQL Server Profiler 或 Extended Events 捕获慢查询。
    • 参数嗅探问题:通过 OPTION (RECOMPILE) 或局部变量缓解。
    • 统计信息更新:UPDATE STATISTICS 确保优化器准确估算。
  3. 高可用性方案
    • Always On 可用性组:主副本+多个辅助副本,支持读写分离。
    • 故障转移群集(FCI):共享存储架构,提供自动故障转移。
    • 日志传送:异步备份/恢复,适用于低延迟要求场景。

安全机制

  1. 认证与授权
    • Windows 认证:集成域账户。
    • SQL Server 认证:独立用户名/密码。
    • 角色管理:db_ownerdb_datareader 等固定数据库角色。
  2. 数据加密
    • 透明数据加密(TDE):加密整个数据库文件。
    • 列级加密:使用 ENCRYPTBYKEY 或 ALWAYS ENCRYPTED(客户端加密)。
  3. 审计与合规
    • SQL Server 审计:跟踪登录、DDL/DML操作。
    • 动态数据掩码:隐藏敏感数据(如 PHONE 显示为 XXX-XXX-1234)。

高级功能

  1. JSON 支持
    • 解析:JSON_VALUEJSON_QUERY
    • 生成:FOR JSON PATH 格式化查询结果。
  2. ** temporal 表**
    • 系统版本化表:自动记录数据历史版本(SYSSTARTSYSEND 列)。
  3. PolyBase
    • 连接外部数据源(如Hadoop、Azure Blob Storage),支持T-SQL查询。

维护与管理

  1. 备份与恢复
    • 完整备份:BACKUP DATABASE [Name] TO DISK
    • 差异备份:仅备份自上次完整备份后的更改。
    • 时间点恢复:结合事务日志备份(RESTORE LOG WITH STOPAT)。
  2. 自动化任务
    • 维护计划:通过SSMS向导创建定期任务(重建索引、更新统计信息)。
    • 作业调度:SQL Server Agent 执行自定义脚本。
  3. 监控工具
    • 动态管理视图(DMV):如 sys.dm_exec_requests 监控活动查询。
    • Performance Monitor:跟踪 SQLServer:Buffer Manager 等计数器。

云集成(Azure SQL Database)

  1. 托管实例
    • 兼容本地SQL Server,支持跨数据库事务和链接服务器。
  2. 弹性池
    • 共享资源池,优化多数据库成本。
  3. Geo-Replication
    • 跨区域复制,实现灾难恢复。

一、开始安装

1. 更新软件包列表

sudo apt update

2. 安装必要依赖

sudo apt install -y curl wget gnupg2 net-tools

二、添加 Microsoft SQL Server 软件源

1. 导入 Microsoft GPG 公钥

curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg

2. 添加 SQL Server Ubuntu 软件源

根据你的 Ubuntu 版本选择对应的命令:

Ubuntu 20.04 (Focal)
echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2022 focal main" | sudo tee /etc/apt/sources.list.d/mssql-server.list
Ubuntu 22.04 (Jammy)
echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/22.04/mssql-server-2022 jammy main" | sudo tee /etc/apt/sources.list.d/mssql-server.list

三、安装 SQL Server

1. 更新软件包列表

sudo apt update

2. 安装 SQL Server

sudo apt install -y mssql-server

四、配置 SQL Server

安装完成后,需要运行配置脚本来设置系统管理员(SA)密码和选择版本。

sudo /opt/mssql/bin/mssql-conf setup

系统会提示你:

  • 选择版本
    • (1)   Evaluation (评估版):功能最全的180天试用版,过期即停。
    • (2)   Developer (开发版):功能同企业版,但禁止用于生产,专供开发。
    • (3)   Express (精简版)功能最弱的免费版,适合学习和微型应用。
    • (4)   Web (Web版):为网站托管设计的付费版。
    • (5)   Standard (标准版)性价比最高的付费版,满足多数企业需求。
    • (6)   Enterprise (企业版):功能最强,但CPU核心数被限制(20物理/40超线程)。
    • (7)   Enterprise Core (企业核心版):功能最强,无CPU核心数限制,性能拉满。
    • (8)   产品密钥:一个激活选项,用于激活你已购买的本地付费版。
    • (9)   Standard (Azure计费):在微软云上按小时付费使用的标准版。
    • (10) Enterprise Core (Azure计费):在微软云上按小时付费使用的企业核心版。
  • 接受许可协议:输入 YES

  • 设置 SA 用户密码

    • 密码长度 ≥ 8 位
    • 必须包含大写字母、小写字母、数字和特殊字符

例如:MyS@qlP@ssw0rd!

配置成功后,服务会自动启动。

推荐开发测试使用 Developer (2)

五、验证 SQL Server 是否运行

1. 检查服务状态

systemctl status mssql-server

2. 检查监听端口(默认 1433)

ss -tulnp | grep 1433

六、安装 SQL Server 命令行工具

为了能在本地连接和管理数据库,建议安装 sqlcmdbcp 工具。

1. 添加 Microsoft Linux 软件源(客户端工具)

curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft-prod.gpg

然后添加源(以 Ubuntu 22.04 为例):

echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/22.04/prod jammy main" | sudo tee /etc/apt/sources.list.d/msprod.list

2. 安装工具

sudo apt update
sudo apt install -y mssql-tools unixodbc-dev

3. 添加环境变量

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

七、连接并测试数据库

使用 sqlcmd 连接本地 SQL Server

sqlcmd -S localhost -U SA -P 'MyS@qlP@ssw0rd!'

注意:密码中若含特殊字符(如 $!),建议用单引号包裹。

进入交互界面后,输入以下 T-SQL 命令测试:

SELECT @@VERSION;
GO

退出:

QUIT

八、常用管理命令

功能命令
启动服务sudo systemctl start mssql-server
停止服务sudo systemctl stop mssql-server
重启服务sudo systemctl restart mssql-server
查看日志sudo journalctl -u mssql-server -f
修改 SA 密码sudo /opt/mssql/bin/mssql-conf set-sa-password

九、卸载 SQL Server

# 移除包
sudo apt remove mssql-server# 清理数据和配置(⚠️ 慎用!会删除所有数据库!)
sudo rm -rf /var/opt/mssql/

十、常见问题排查

1. 服务无法启动?

查看日志:

sudo journalctl -u mssql-server --since today

常见原因:

  • 内存不足(<2GB)
  • SA 密码不符合复杂度要求
  • 磁盘空间不足

2. 连接被拒绝?

  • 检查 systemctl status mssql-server
  • 确认端口 1433 是否监听:ss -tuln | grep 1433
  • 检查防火墙设置

通过以上步骤,你已在 Ubuntu 系统上成功部署 Microsoft SQL Server。无论是用于开发、测试还是轻量级生产环境,SQL Server on Linux 都提供了强大的关系型数据库能力。

http://www.dtcms.com/a/581189.html

相关文章:

  • 网站上面怎么做链接微信网站合同
  • 关于网站建设与维护的参考文献phpcms 恢复网站
  • 圆角边框+阴影
  • Android14 init.environ.rc详解
  • 网段并网,打通网络
  • VBA之Word应用第四章第四节:段落集合Paragraphs对象的方法(二)
  • 深耕蓝牙物联网十年:北京桂花网 2015-2025 发展大事件全景
  • MCU微控制器,N32H47x高性能MCU机器人关节控制方案
  • 年销 1.3 亿的 AI 商业操盘手陈灏陈厂长确认登陆创客匠人万人峰会
  • 用户体验 网站重庆便民服务网站APP
  • 教育类网站建站建筑工程网格化管理的目的和意义
  • Flink Source源码解析
  • 春招准备之MyBatis框架篇
  • 华为交换机上配置基于 IP 地址的 ACL
  • 【C++练习】31. C++计算最大公约数(GCD)
  • 从普通屏到 明基RD320U:一台显示器如何提升我的编码效率?
  • 从 ACID 到 MVCC,MySQL 事务与隔离级别超详解
  • 植物生理研究的精准量化:光合作用测定仪的应用与前景
  • Win电脑文字转语音,不限使用次数和字数!可将文字文本内容转换为朗读配音的音频文件!多功能语音合成,内置多语种、多角色语音配音模型,支持普通话标准发音和方言!
  • 网页设计与网站建设作业答案淘宝宝贝关键词排名查询工具
  • 2025年CSP-X复赛真题及题解(山东):T2IOI串
  • 基于网易CodeWave智能开发平台构建宝可梦图鉴
  • Ubuntu2204降内核版本
  • 数据在网络上的转发过程
  • 跨地域传文件太麻烦?Nginx+cpolar 让本地服务直接公网访问
  • ASP.NET MVC 数据验证进阶:用 IValidatableObject 实现自定义验证逻辑 引言:为什么需要 “自定义验证”?
  • 网站流量报表摄像头怎么做直播网站
  • XMOS与飞腾云联袂以模块化方案大幅加速音频产品落地
  • AI 下的 Agent 技术全览
  • 唐山免费网站制作wordpress企业cms开发