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

Mac上使用Docker快速部署SQL Server指南

1. 为什么要在Mac上通过Docker运行SQL Server作为常年使用Mac的开发者我最初也很困惑微软的SQL Server明明是为Windows设计的为什么要在macOS上折腾直到接手了一个使用SQL Server作为数据库的老项目才明白——当客户环境已经固定时本地开发环境必须与之匹配。传统方案要么用虚拟机装Windows要么购买Mac版Parallels Desktop直到发现Docker这个救星。Docker容器化方案有三大不可替代的优势资源占用极低相比启动整个Windows虚拟机容器只占用SQL Server运行所需的资源我的MacBook Pro内存从常年告急降到游刃有余环境隔离干净每个项目可以用不同版本的SQL Server互不干扰再也不用担心在我的机器上能运行的经典问题秒级启停测试时反复重启数据库是常态容器化的SQL Server启动速度比原生安装快3倍以上实测在M1芯片的MacBook Air上从拉取镜像到可用数据库全程不超过15分钟视网络情况。下面我就把踩过坑的完整流程分享给大家。2. 准备工作Docker环境配置2.1 安装Docker Desktop首先访问Docker官网下载Mac版安装包。注意芯片类型选择Intel芯片选Docker Desktop for MacApple SiliconM1/M2选Docker Desktop for Mac (Apple Silicon)安装完成后建议进行两个关键配置在Docker图标 Preferences Resources中将内存调到至少4GBSQL Server较吃内存在Advanced页面勾选Use gRPC FUSE for file sharing解决Mac文件权限问题注意首次启动会要求授予权限务必点击Allow否则容器无法联网2.2 配置国内镜像加速默认的Docker Hub在国内拉取镜像很慢建议修改为国内镜像源。打开终端执行# 创建或修改docker配置 mkdir -p ~/.docker cat ~/.docker/daemon.json EOF { registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://hub-mirror.c.163.com ], experimental: false, debug: true } EOF然后重启Docker服务点击菜单栏鲸鱼图标 Restart。可以通过以下命令验证是否生效docker info | grep Mirrors -A 23. 拉取并运行SQL Server容器3.1 选择适合的镜像版本微软官方提供了多个SQL Server镜像推荐使用azure-sql-edge轻量版约500MB适合开发和测试mssql-server-linux完整功能版约1.5GB适合生产环境模拟这里以azure-sql-edge为例执行拉取命令docker pull mcr.microsoft.com/azure-sql-edge:latest实测技巧如果下载中断可以用docker pull --resume继续比重新下载快得多3.2 启动容器关键参数解析运行SQL Server需要特别注意密码策略这是最容易出错的地方。完整启动命令如下docker run -d \ --name sql_server \ -e ACCEPT_EULAY \ -e MSSQL_SA_PASSWORDMyComplexPssw0rd \ -e MSSQL_PIDDeveloper \ -p 1433:1433 \ mcr.microsoft.com/azure-sql-edge参数说明ACCEPT_EULAY必须设置为Y表示接受许可协议MSSQL_SA_PASSWORD密码必须包含大小写字母数字特殊字符中的至少三类MSSQL_PID指定为Developer可免费使用完整功能-p 1433:1433将容器内默认端口映射到主机常见错误处理密码太简单会报错Invalid password忘记ACCEPT_EULA会导致容器立即退出端口冲突时修改为-p 51433:1433等其它端口3.3 验证容器状态启动后执行以下命令检查# 查看运行中的容器 docker ps # 查看日志尤其出错时 docker logs sql_server # 进入容器内部调试用 docker exec -it sql_server bash当看到日志输出SQL Server is now ready for client connections表示成功。4. 连接与管理数据库4.1 使用命令行工具连接即使不安装GUI工具也能用官方sqlcmd工具操作# 先进入容器环境 docker exec -it sql_server bash # 在容器内使用sqlcmd /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P MyComplexPssw0rd成功连接后会显示1提示符可以执行SQL语句CREATE DATABASE TestDB; GO USE TestDB; GO CREATE TABLE Users (ID INT, Name NVARCHAR(50)); GO INSERT INTO Users VALUES (1, Mac用户); GO SELECT * FROM Users; GO4.2 图形化工具推荐我日常使用三款工具各有优势Azure Data Studio微软官方免费且功能完整支持智能提示和笔记本功能下载地址https://aka.ms/azuredatastudioDBeaver开源跨平台支持几乎所有数据库社区版完全免费连接配置Host: localhostPort: 1433Authentication: SQL ServerUsername: SAPassword: 你的密码TablePlusMac原生体验颜值高响应快支持SSH隧道连接适合需要频繁切换多个数据库的用户4.3 常见连接问题解决连接超时检查Docker是否运行验证端口映射是否正确尝试telnet localhost 1433测试端口认证失败密码是否包含特殊字符确认用户名是SA区分大小写可通过docker logs查看错误详情5. 数据持久化与备份5.1 挂载数据卷防止丢失默认情况下容器停止后数据会丢失。通过volume实现持久化# 创建专用数据卷 docker volume create sql_data # 启动时挂载 docker run -d \ --name sql_server \ -v sql_data:/var/opt/mssql \ -e ACCEPT_EULAY \ -e MSSQL_SA_PASSWORDMyComplexPssw0rd \ -p 1433:1433 \ mcr.microsoft.com/azure-sql-edge数据会保存在/var/lib/docker/volumes/sql_data目录下即使删除容器也不会丢失。5.2 备份与恢复实战通过容器内命令实现备份# 进入容器 docker exec -it sql_server bash # 执行备份在容器内 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P MyComplexPssw0rd \ -Q BACKUP DATABASE TestDB TO DISK/var/opt/mssql/backup/TestDB.bak # 将备份文件复制到主机 docker cp sql_server:/var/opt/mssql/backup/TestDB.bak ~/Downloads/恢复数据库时反向操作# 先将备份文件放入容器 docker cp ~/Downloads/TestDB.bak sql_server:/var/opt/mssql/backup/ # 执行恢复 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P MyComplexPssw0rd \ -Q RESTORE DATABASE TestDB FROM DISK/var/opt/mssql/backup/TestDB.bak WITH REPLACE6. 性能优化技巧6.1 内存限制调整SQL Server默认会尽可能占用内存在Docker中需要限制docker run -d \ --name sql_server \ --memory4g \ --memory-swap4g \ -e MSSQL_MEMORY_LIMIT_MB2048 \ -v sql_data:/var/opt/mssql \ -p 1433:1433 \ mcr.microsoft.com/azure-sql-edge--memory容器最大可用内存MSSQL_MEMORY_LIMIT_MBSQL Server实际可用内存建议为总内存的70%6.2 跨平台文件共享优化在Mac上Docker通过虚拟机运行Linux容器导致文件IO性能较差。解决方案对于数据库文件始终使用Docker Volume而非直接挂载主机目录导入大量数据时先用docker cp复制到容器内再操作在Docker设置中将项目目录添加到File Sharing白名单6.3 监控与调优工具内置工具查看性能-- 查看当前连接 SELECT * FROM sys.dm_exec_connections; -- 查询性能统计 SELECT * FROM sys.dm_exec_query_stats; -- 最耗CPU的查询 SELECT TOP 10 query_stats.query_hash, SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) as avg_cpu_time, MIN(query_text.text) as sample_query_text FROM sys.dm_exec_query_stats as query_stats CROSS APPLY sys.dm_exec_sql_text(query_stats.sql_handle) as query_text GROUP BY query_stats.query_hash ORDER BY avg_cpu_time DESC;

相关文章:

Mac上使用Docker快速部署SQL Server指南

1. 为什么要在Mac上通过Docker运行SQL Server? 作为常年使用Mac的开发者,我最初也很困惑:微软的SQL Server明明是为Windows设计的,为什么要在macOS上折腾?直到接手了一个使用SQL Server作为数据库的老项目才明白——当…...

CenterPoint 模型结构与输出语义解析

本文以地平线 Open Explorer(OE)中的 CenterPoint 参考算法为主线,系统梳理 CenterPoint 的模型结构设计、Head 与 box 语义拆分方式,以及在工具链中从训练、导出到编译部署的完整工程语义。文末通过 nuScenes → KITTI 的一次实际…...

章三 通往殿堂的阶梯

我大学刚毕业时就入职了一家以图像处理见长的外企,因为很多材料是日语撰写的,作为工作需要,那年我对这个小语种的痴迷也达到了一个小巅峰,为此我即自学了日语又到处寻找资料去补充我在图像处理这一块的短板知识。当我们想打印一张…...

并网模式下微电网经济调度之粒子群算法探秘

并网模式下采用粒子群算法进行微电网经济调度,含有储能调度,有注释。在当今能源转型的大背景下,微电网作为一种高效、灵活的能源系统备受关注。在并网模式下,如何实现微电网的经济调度是关键问题,而粒子群算法&#xf…...

MMC-HVDC仿真模型及柔性直流输电相关基础模型集合

MMC-HVDC仿真模型,pscad柔性直流输电仿真mmc仿真模型,双端mmc模型,MMC为21电平NLM和均压控制,还有多端如张北直流电网以及基本mmc逆变器,自己为毕业网上收集的一些觉得有用的基础模型最近在折腾MMC-HVDC仿真&#xff0…...

AI编程实战:从零到一搭建全栈项目断

1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级)&#xff1a…...

【单片机实战指南】从零构建:基于80C51与数码管的可编程定时器

1. 项目背景与核心功能 第一次接触单片机开发时,我被数码管显示数字的效果深深吸引。这次我们要做的可编程定时器,本质上是一个带定制化上限的数字秒表。使用最常见的80C51单片机搭配两位共阳数码管,通过定时器中断实现精准计时。最有趣的是这…...

【技术解析】BAN——双线性注意力网络在视觉问答中的高效应用与优化

1. 双线性注意力网络(BAN)为何能成为视觉问答的利器 视觉问答(VQA)任务需要同时理解图像内容和自然语言问题,这对模型的跨模态交互能力提出了极高要求。传统协同注意力机制虽然能分别捕捉视觉和文本特征,但…...

OpenCV中的VideoCapture后端参数详解城

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式,即所谓的“工程导向型”开发,要求开发者创建一个复杂的项目结构,包括项目文件(.csproj)、解决方案文件(.sln)、属性设置以及依赖…...

VMware Workstation 17 Pro 环境下 Kali Linux 2025-2026 版本鼠标光标消失问题的研究与解决方案

摘要 本文针对 VMware Workstation 17 Pro 虚拟化平台中运行 Kali Linux 2025-2026 版本时出现的鼠标光标消失及剪贴板共享失效问题,通过系统性的故障排查与兼容性分析,提出了一种基于虚拟机硬件兼容性配置调整与 open-vm-tools-desktop 组件优化的综合…...

MySQL如何防止开发环境数据同步到生产_设置访问控制与网络隔离

开发能删表是因为权限未按库限定或实例混用,如测试库与生产库共用实例、bind-address0.0.0.0暴露端口、localhost连接绕过网络控制、主从配置不当致数据回流等。MySQL用户权限只给SELECT,为什么开发还能删表?权限配置不等于安全隔离。即使GRA…...

融通金贵金属实时行情 API 对接教程(HTTP+WebSocket 完整实现)

融通金API,融通金实时行情API,贵金属行情API对接,实时行情数据源,WebSocket行情推送在贵金属行情展示、量化交易系统、企业数据监控场景中,融通金黄金、白银、铂金、钯金等全品种实时行情是核心刚需。本文基于脉动数据行情平台,提供一套可直接用于生产环…...

从Pelgrom‘s Law看3nm工艺挑战:NSFET如何突破器件均匀性极限?

3nm工艺时代的器件均匀性挑战:NSFET如何改写Pelgrom定律的剧本? 当半导体工艺节点推进到3nm时,工程师们发现一个残酷的现实:晶体管尺寸的每一次缩小,都伴随着工艺偏差的指数级放大。这种被称为"Pelgrom效应"…...

OpenClaw学习路径规划:Qwen3.5-9B生成个性化课程表

OpenClaw学习路径规划:Qwen3.5-9B生成个性化课程表 1. 为什么需要AI学习规划助手 去年备考PMP认证时,我曾在纸质日历上手工绘制学习计划表。三周后却发现实际进度落后40%,那些用荧光笔标记的"完美规划"成了讽刺画。这种经历让我意…...

Jetson Orin NX 实时内核配置:从SDKManager便捷烧录到OTA升级实战

1. Jetson Orin NX实时内核配置的两种路径 第一次接触Jetson Orin NX时,我和很多开发者一样纠结于如何高效配置实时内核。经过多次实践,我发现主要有两种可靠路径:SDKManager一键烧录和OTA升级改造。这两种方式各有优劣,适合不同…...

CentOS 7.4编译FFmpeg遇阻:从nasm/yasm报错到完整安装的实战指南

1. 当FFmpeg编译遇上拦路虎:nasm/yasm报错解析 第一次在CentOS 7.4上编译FFmpeg时,看到屏幕上跳出"nasm/yasm not found or too old"的红色警告,我整个人都懵了。这不是个简单的依赖缺失问题,而是一个典型的"你以为…...

论文降AI工具测评:10款对比后这款低至0.12%通过率极高

2026年国内学术圈AIGC检测规则全面更新,学生和科研人员对论文降AI工具的需求持续攀升,一季度用户规模已突破2000万。但市面上各类工具的技术能力差异极大,多数还停留在同义词替换、简单调整句式的浅层改写阶段,根本无法应对知网、…...

AllWize库:面向Wize协议的LoRa射频嵌入式驱动开发指南

1. AllWize库概述:面向Wize协议的嵌入式无线通信底层实现 AllWize是一个专为Wize协议设计的Arduino兼容C库,核心目标是为RC1701HP系列射频模块提供轻量、可靠、跨平台的硬件抽象层。该库并非通用无线协议栈,而是深度绑定于RadioCrafts公司推…...

Sunday算法实战:C++高效内存特征码搜索与通配符优化

1. Sunday算法与内存特征码搜索初探 第一次接触内存特征码搜索时,我完全被那些十六进制数字和问号搞懵了。直到发现Sunday算法这个神器,才真正体会到什么叫"秒搜"的快感。简单来说,Sunday算法就像是个超级眼疾手快的图书管理员&…...

2026年2月 | 薪酬绩效设计TOP8咨询公司推荐

在企业人效低下、薪酬激励失效、人才流失率攀升的挑战下,科学的薪酬绩效体系成为组织破局的关键。数据显示,超过60%的中小企业面临"高成本、低产出"困境,薪酬结构不合理导致人才流失率居高不下。本文基于"方法论创新、落地执行…...

小白程序员也能看懂的大模型内部原理:从加减乘除到Llama 3.1(收藏版)

本文深入浅出地解析了大语言模型(LLM)的工作原理,从基础的加减乘除运算开始,逐步构建一个生成式AI,并最终理解现代LLM和Transformer架构。文章剥去了机器学习领域的复杂术语,将一切还原为数字,帮…...

即时消息系统:从核心概念到架构演进的深度解析

1. 即时消息系统的核心概念解析 第一次接触即时消息系统开发时,我被各种专业术语搞得晕头转向。直到自己动手实现了一个简易版IM系统,才发现这些概念其实都很接地气。让我们用日常聊天的场景来理解这些专业名词: 用户就是你和你的微信好友&am…...

【独家首发】华为云+蚂蚁集团联合复盘:AI原生项目失败率下降67%的关键决策树(含可落地Checklist)

第一章:AI原生软件研发最佳实践:大厂案例分享 2026奇点智能技术大会(https://ml-summit.org) 大型科技企业在构建AI原生软件时,已逐步形成以模型即服务(MaaS)、数据闭环驱动和开发者体验优先为核心的工程范式。Google…...

告别ArcGIS Server高成本!手把手教你用GeoServer 2.16发布ArcGIS 10.2切片包

开源GIS解决方案:GeoServer高效发布ArcGIS切片全流程指南 在GIS领域,数据可视化与在线地图服务已成为基础设施建设的标配需求。然而,商业软件高昂的许可费用常常让中小型团队望而却步——以ArcGIS Server企业版为例,单台服务器年费…...

mysql执行预处理语句流程是怎样的_SQL执行优化解析

预处理语句生命周期为PREPARE→EXECUTE→DEALLOCATE三阶段,执行计划在EXECUTE时生成且不跨连接复用;参数类型影响索引选择与优化效果;仅支持值占位,不支持动态表名/列名;PHP PDO默认模拟预处理会失效原生优化。预处理语…...

解锁Presto/Trino高级查询:从集合运算到多维分析与窗口函数实战

1. 从零掌握Presto/Trino集合运算 第一次接触Presto/Trino的集合运算时,我完全被UNION、INTERSECT、EXCEPT这些操作符搞晕了。直到在电商用户行为分析项目中踩过几次坑后,才发现它们其实是处理数据集的瑞士军刀。想象你手上有两份销售数据:线…...

Photoshop CS6 分享

下载链接Photoshop CS6 好用链接:https://pan.quark.cn/s/35e0b2cbe8094:/^tX0KdDR5jR^%第二步:双击exe文件打开即可\n三:软件介绍\n\n\n原版安装复杂、占满 C 盘,新版要求高配置带不动?今天给大家安排一款「宝藏版本」…...

Pandas 批量读写数据库:高效导入导出优化方案

在数据驱动的开发工作中,Pandas 凭借其强大的数据处理能力,已经成为 Python 数据生态中不可或缺的工具。然而,很多开发者在使用 Pandas 与数据库交互时,常常遇到一个令人头疼的问题:当数据量达到百万级甚至千万级时&am…...

数据结构与算法的实战场景剖析(持续更新)

1. 排序算法在数据库索引中的实战应用 数据库索引就像图书馆的目录系统,而排序算法就是构建这个目录的核心工具。在实际项目中,我们经常需要根据不同的查询需求选择合适的排序算法来构建索引。比如MySQL的InnoDB引擎就采用了B树作为索引结构,…...

java进阶-Dubbo

Apache Dubbo 是一款由阿里巴巴开源、Apache 基金会旗下的高性能微服务开发框架。它的核心是为分布式系统提供高效的RPC(远程过程调用)通信和服务治理能力。简单来说,Dubbo 就像微服务架构的"高速公路",让一个服务&…...