
简介Azure Data Studio是一款面向数据库管理员、开发者和数据分析师的跨平台数据管理工具基于Electron和TypeScript构建支持Windows、macOS与Linux系统。它重点解决传统SQL Server管理工具无法跨平台使用的问题既能连接本地SQL Server也能直接管理Azure SQL DB和SQL DW同时兼容PostgreSQL等常见数据库适合云数据库运维、跨平台开发调试以及日常查询管理工作。整个下载包为zip格式大小约26.45MB功能上内置智能T-SQL查询编辑器支持自动提示、错误诊断、格式化与定义预览查询结果查看器可处理大型结果集并导出为JSON、CSV或Excel管理仪表板提供可自定义小部件可视数据编辑器允许直接增删改查表数据备份恢复对话框则支持高级自定义与远程文件浏览。整体而言读者通过这份资源可快速获得一款轻量但功能完整的跨平台SQL客户端目前已有2645人学习下载适合需要统一SQL工作环境的个人开发者与运维团队。1. Azure Data Studio 是什么三种操作系统共用一套 SQL Server 前端Azure Data Studio下面按习惯简称 ADS是微软出品的一款免费数据管理工具能在 Windows、macOS 和 Linux 上连接 SQL Server、Azure SQL DB 和 Azure SQL DW现在控制台里叫 Synapse 专用 SQL 池。它不是网页控制台而是一个本地桌面客户端界面和 VS Code 同源早期还叫过 SQL Operations Studio后来改名为 Azure Data Studio。对开发环境很杂的团队来说最直接的价值是管一台 Windows 上的 SQL Server不再需要被迫开远程桌面也不用在 Mac 和 Linux 上装个虚拟机才能跑管理端。适合三类人跨平台开发、写运维脚本的工程师以及需要把查询过程和结果沉淀成文档的数据分析。纯 DBA 的深度管理它做不全但日常开发与巡检这一层它比 SSMS 更轻、更顺手。2. 在 Windows、macOS 和 Linux 装好 Azure Data Studio安装命令与第一次连接2.1 安装包怎么选Windows、macOS、Linux 三条路径ADS 官方下载页会按系统给你三个选择Windows 的 exe、macOS 的 dmg、Linux 的 deb/rpm/tar.gz。Windows 端双击 exe 就能装它是用户级安装不需要管理员权限装完直接在开始菜单里找。macOS 端把 dmg 拖进 Applications 就行用 Homebrew 的话一条命令更快# macOS 上用 Homebrew 安装 brew install --cask azure-data-studioLinux 端的安装最容易被新手卡住因为发行版太多。常见做法是按自己的包管理器选 deb 或 rpmDebian/Ubuntu 系用 dpkgRHEL/CentOS 系用 rpm。如果拿不准tar.gz 解压就能跑属于绿色版。# Debian / Ubuntu 系 sudo dpkg -i azuredatastudio-linux-*.deb # 如果提示缺依赖先让 apt 自动补齐 sudo apt-get install -f # RHEL / CentOS / Fedora 系 sudo rpm -ivh azuredatastudio-linux-*.rpm # 不想动包管理器的直接解压 tar.gz 运行 tar -xzf azuredatastudio-linux-*.tar.gz ./azuredatastudio/azuredatastudio这里要说清楚三条命令的关系dpkg 和 rpm 负责把程序注册进系统菜单和 PATH但会检查依赖tar.gz 不碰系统目录适合在用户目录下解压使用缺点是不会自动出现在应用列表里升级也要手动换包。多数人卡在第二步——deb 装完提示缺共享库这是因为 Electron 应用需要 libnss3、libasound2 这类图形和音频库apt-get install -f会把缺的依赖一次性补上。提示Linux 版不会像 Windows 版那样自动更新每次都要手动下载新包覆盖这是 Linux 用户最容易忽略的一点。如果你是在虚拟机里装 Linux 练手镜像选 Server 版就行ADS 对桌面环境要求不高跑在 Xfce 这类轻量桌面上也完全没问题。2.2 第一次连接连接对话框里每一项都代表什么装好后打开 ADS第一件事是建连接。左上角「新建连接」弹出来的对话框看着字段不多但每一项都影响成败我把日常最常用的一列参数放在下面字段填什么说明Serverlocalhost 或 主机名\实例名Azure 上填 xxx.database.windows.net本机实例写 localhost命名实例要带反斜杠Authentication typeSqlLogin 或 IntegratedSQL 登录适合大多数场景域环境用 IntegratedUser namesa 或受限账号Azure SQL DB 的登录名要写成 userserver 格式Password对应密码留空会在连接时弹出输入框Database留空或指定库名留空时连到登录名的默认数据库AdvancedEncrypt、Trust Server CertificateLinux 上很多人需要把 Trust Server Certificate 打开本地装过 SQL Server Express 的Server 填localhost\SQLEXPRESS认证方式选 SqlLogin用户名 sa。连接 Azure SQL DB 则完全是另一套规则Server 填门户里那个xxxx.database.windows.net完整域名密码账号要在 Azure 门户里单独建登录名格式是用户名服务器名。连上之后第一件该做的事是跑一段验证脚本确认当前环境-- 查看实例版本与运行模式 SELECT VERSION; -- 列出当前登录能看到的所有数据库 SELECT name, state_desc, recovery_model_desc FROM sys.databases ORDER BY name;VERSION返回一段文本能直接看出是 SQL Server 2019 还是 2022、是否是企业版、跑在 Windows 还是 Linux 上。sys.databases是系统视图state_desc显示 ONLINE/OFFLINErecovery_model_desc显示简单/完整/大容量日志三种恢复模式——接手的第一个库如果发现是 SIMPLE 模式备份策略就要重新评估。这两条语句能快速确认连接没有任何问题。2.3 把常用连接放进配置文件settings.json 的结构与迁移很多人不知道 ADS 的连接信息是可以脱离界面直接迁移的。它在三套系统上都把配置放在用户目录下的 settings.json 里Windows 是%APPDATA%\azuredatastudio\User\settings.jsonmacOS 是~/Library/Application Support/azuredatastudio/User/settings.jsonLinux 是~/.config/azuredatastudio/User/settings.json。这个文件里带datasource.connections数组的就是已保存连接{ datasource.connections: [ { server: localhost, authenticationType: SqlLogin, user: sa, password: , database: master, options: {} }, { server: my-ads-test.database.windows.net, authenticationType: SqlLogin, user: myadminmy-ads-test, database: demo_db, options: {} } ] }这个数组的字段和连接对话框一一对应authenticationType只接受SqlLogin和Integrated两种值password留空表示每次连接再输入不把密码写进明文文件。如果你勾选了记住密码ADS 会把密码交给操作系统的钥匙串或凭据管理器加密保存而不是明文躺在 JSON 里。我一般会把这份文件里不带密码的连接数组存到团队内部的知识库新同事装完 ADS 直接粘过去几十个测试环境的连接就都在了。这里有一条安全边界凡是带密码的连接片段一律不进入任何仓库否则等于把数据库口令送给所有能读到仓库的人。3. 日常操作落地查询编辑器的高频动作、Notebook 与服务器仪表盘3.1 查询编辑器执行、执行计划与结果导出ADS 的查询编辑器是整台工具的核心快捷键沿用了 VS Code 的习惯。选中一段脚本按 F5 只执行选中部分这个细节很多人踩过一段脚本里建表又插入数据光标停在插入语句上按 F5编辑器只跑当前光标所在的语句后面的不执行看起来像“脚本跑了一半”。-- 接手一台别人的 SQL Server先看现在谁在跑什么 SELECT TOP 10 r.session_id, s.login_name, r.status, r.cpu_time, r.total_elapsed_time / 1000 AS elapsed_sec, t.text FROM sys.dm_exec_requests r JOIN sys.dm_exec_sessions s ON r.session_id s.session_id CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t ORDER BY r.cpu_time DESC;这段查询的价值在于不用装任何插件就能定位慢查询来源sys.dm_exec_requests给出正在执行的请求cpu_time是 CPU 消耗毫秒数total_elapsed_time / 1000转成秒CROSS APPLY sys.dm_exec_sql_text把 SQL 句柄还原成原始 SQL 文本。结果网格里点列头可以直接排序找一个 cpu_time 特别大的 session多半就是问题源头。执行计划也是排查慢查询的必备动作工具栏上「解释」按钮会生成估计执行计划图形界面里能看到全表扫描、索引查找、哈希匹配这些算子。实际经验是看到 Index Scan 且返回行数远大于预期时第一反应应该是看统计信息是不是过期而不是立刻加索引——先UPDATE STATISTICS再重跑有时候计划就变了。结果网格的导出有三个选项CSV、JSON、Excel。默认情况下网格只回显有限行数数据量大时要在「工具 选项 查询结果 网格」里调高最大行数上限。导出 Excel 时如果列很多列名带特殊字符容易出问题我一般先跑SELECT ... FOR JSON转一遍再交给下游。3.2 Notebook把一次排查写成能复现的记录Notebook 是 ADS 区别于传统管理工具最明显的一点。打开「文件 新建笔记本」选择一个 SQL 内核就能在一个文件里混排 Markdown 说明和 SQL 代码单元。每个代码单元执行后结果表格直接留在文件里保存成 .ipynb 后发给同事对方打开就能看到当时的查询和输出的完整现场。典型场景是写巡检报告。第一格写 Markdown本周磁盘空间趋势、怀疑对象第二格放 SQL-- 检查所有数据库文件的空间占用 SELECT DB_NAME(database_id) AS db_name, type_desc AS file_type, name AS logical_name, CAST(size * 8 / 1024.0 AS DECIMAL(12,2)) AS size_mb, CAST(FILEPROPERTY(name, SpaceUsed) * 8 / 1024.0 AS DECIMAL(12,2)) AS used_mb FROM sys.master_files ORDER BY size_mb DESC;sys.master_files返回的是所有数据库的数据文件和日志文件size单位是 8KB 页。把size * 8 / 1024.0转成 MB再通过FILEPROPERTY(name, SpaceUsed)拿到已用空间两者一减就是可回收空间。这套写法比界面右键看属性快得多而且能一次覆盖整个实例。Notebook 的边界要认清它适合记录和复现不适合做批量自动化。如果你需要定时跑、出报表应该走 SQL Agent 作业或外部调度Notebook 只是给人看的中间产物。另外 Notebook 文件默认是 JSON 格式的 .ipynb会混入执行输出提交到 Git 仓库前最好把输出清掉否则每次运行都会产生一堆 diff。3.3 服务器仪表盘磁盘、等待与活动连接连接服务器后右键服务器名选「管理」会进入仪表盘页面。这里直接展示实例级信息磁盘使用、活动会话、最近的慢查询、等待统计。对 DBA 来说这些数据不够深但对开发者和运维人员足够定位 80% 的“服务器怎么这么慢”问题。仪表盘上有几个图表值得先看等待统计里如果PAGEIOLATCH_SH占大头说明磁盘 IO 是瓶颈LCK_M_X占大头则是有长事务锁表。点图表能跳转到详细查询背后执行的也是系统 DMV界面只是包了一层壳。备份恢复这块默认界面只提供最基本的操作。想要完整的备份恢复向导需要装微软官方扩展包下一章会讲。恢复一个 .bak 文件时最容易翻车的点是逻辑文件名不匹配——同一个备份文件恢复到改名后的实例数据文件和日志文件的逻辑名还是老的向导里必须手动改目标路径否则直接报 3154 错误。遇到这个错不用慌在恢复语句里加WITH MOVE指定逻辑名到物理路径的映射即可。4. 和 SSMS 怎么分工选型边界与扩展安装清单4.1 SSMS 和 ADS 的边界一张表看清分工ADS 出现后最常被问的问题是SSMS 是不是要被替代答案是没有。两者定位不同正确的做法是共存。我把选择边界列成一张表维度SSMSAzure Data Studio支持系统仅 WindowsWindows、macOS、Linux轻量程度重安装包大轻启动快擅长领域深度运维作业、审计、策略、性能分析器日常开发、跨平台连接、Notebook、Git 集成扩展能力弱官方功能为主强扩展市场更新频率随 SQL Server 版本节奏独立高频更新适合角色DBA、生产变更开发、数据分析、运维判断标准很简单要做新建作业、配置审计、看性能分析器这类深度管理用 SSMS要在一个非 Windows 环境里快速查数、改结构、复现问题用 ADS。生产变更我一般会在 SSMS 里做因为它对 SQL Server 功能覆盖最全而日常开发和排查全部在 ADS 里完成。本地测试建议装 SQL Server Express 免费版配合 ADSExpress 占资源小、支持数据库引擎连进来和正式环境行为一致开发机用它做实验最划算。4.2 扩展市场里值得先装的 4 个官方扩展ADS 的扩展体系是它和 SSMS 拉开差距的关键。打开左侧扩展图标搜名字安装即可。我个人的建议顺序是Schema Compare结构和数据对比用来比对两个环境的表结构差异生成同步脚本。SQL Server Agent在 ADS 里直接管理和运行代理作业省去切 SSMS 的时间。SQL Server Import免开发导入扁平文件处理 CSV 直接落到表。Database Admin Tool Extensions微软官方管理套件补上备份恢复向导、日志查看等基础管理能力。扩展也可以命令行安装这在批量初始化环境时非常有用# 命令行安装扩展发布者.扩展名 在扩展详情页能看到 azuredatastudio --install-extension ms-mssql.schema-compare命令行安装的好处是可以写进 Linux 脚本里新机器克隆环境时一条命令把全套扩展装好。扩展名写错会提示找不到注意 ID 一定要去扩展详情页复制不要凭记忆输入。装完扩展要重载窗口才生效命令行方式装完也要重启一次 ADS。这会带来一个实际经验ADS 装上 Server Agent 扩展后日常“重启作业”“禁用作业”这类操作不用再开 Windows 远程桌面直接在 Linux 工作机上就能完成。对没有 Windows 桌面的运维来说这是切切实实的幸福感提升。4.3 把 SQL 脚本交给 Git 管理ADS 内置了 Git 集成这是很多团队没意识到的一个隐藏价值。把存放 .sql 脚本、建表语句、种子数据的目录初始化成 Git 仓库每次结构变更都有历史记录回滚有后悔药。流程不复杂打开源代码管理面板点初始化仓库把要纳入版本的文件暂存并提交。配合 Schema Compare 扩展标准动作是先对比线上和期望的差异生成脚本再从 ADS 里跑掉。整个链路都留在 Git 历史里哪张表哪一天被谁改过清晰可查。这里有一个反复踩到的坑不要把保存了密码的连接配置提交进仓库。settings.json 里的连接数组如果含明文密码一旦提交就等于是把生产库口令公开了。正确做法是连接配置里只放 server 和用户名密码留空提交前用 .gitignore 排除掉本地专属文件。5. 跨平台连接避坑最常见的 5 个翻车现场与排查顺序跨平台这个卖点背后坑集中在网络、身份认证、字符集和语法差异四个方向。下面这五条是按出现频率排的前三条几乎每个从 Windows 切到 Linux 的人都会碰到。5.1 连不上从服务状态到防火墙的顺序排查现象ADS 报连接超时或“目标主机主动拒绝”而同一台机器上用别的工具也连不上。原因多半不是 ADS 的问题而是 SQL Server 服务没起来、端口没监听、防火墙挡了。按网上的 SQL Server 安装教程装完 2019/2022 后最容易忽略的就是最后一步没有开防火墙端口。解决在 Linux 服务器上按顺序执行下面几行这是 Linux 常用命令里排查网络必查的三件套# 1. 先确认服务状态没起来先启动 sudo systemctl status mssql-server # 2. 再看端口是否在监听 sudo ss -tlnp | grep 1433 # 3. RHEL 系默认防火墙拦端口放行 1433 sudo firewall-cmd --add-port1433/tcp --permanent sudo firewall-cmd --reload # 4. 最后用 sqlcmd 本机验证排除 ADS 的干扰 sqlcmd -S localhost -U sa -P 你的密码 -Q SELECT 1排查顺序很重要systemctl status看服务、ss -tlnp看监听、防火墙看策略。如果ss输出里没有 1433说明 SQL Server 没在监听修防火墙也没用如果本机 sqlcmd 都连不上问题在数据库引擎本身。这个顺序能避免你在错误的方向上浪费时间。虚拟机环境下还要额外注意网络模式NAT 模式下宿主机器访问虚机 IP 需要做端口转发否则永远连不上这跟 ADS 没有任何关系。5.2 Linux 上用“Windows 身份验证”连库失败现象在 Linux 的 ADS 里选 Integrated 认证连接直接报 Login failed for user。原因ADS 在 Linux 上要走 Kerberos 才能用 Windows 集身份验证而大多数 Linux 工作机没有配置域环境也没有有效的票据。这不是 ADS 的缺陷而是认证协议本身的限制。解决先确认服务器端 SQL Server 是否已经加入域并支持集成认证再看客户端有没有 Kerberos 配置文件。快速自检命令是kinit 域用户名能拿到票据说明 Kerberos 基本通。日常使用更省事的做法是开发环境一律用 SQL 登录域集成认证只留给确实需要在生产环境里用 Windows 账号审计的场景。如果目标是 Azure SQL DB则用 Entra ID原 Azure AD认证登录类型选对应选项同样依赖环境配置本地测试时先用 SQL 登录最省心。5.3 导出中文 CSV 变成乱码现象结果网格右键另存为 CSV用 Excel 打开全是乱码。原因ADS 导出的 CSV 是 UTF-8 编码不带头 BOM而 Windows 版 Excel 默认按 ANSI/GBK 打开中文自然全是问号。这是跨平台工具最典型的字符集翻车。解决两个办法二选一。一是结果网格直接另存为 Excel格式内部处理了编码二是坚持用 CSV 的话要么在 Excel 里用“数据 自文本”导入并指定 UTF-8要么用脚本在导出后给文件头部加上 BOM。实际工作中我基本只导 Excel因为 CSV 还有第二个坑中文列名若带逗号会直接把一列拆成两列数据就整体错位了。5.4 IntelliSense 提示的还是旧结构现象刚执行完ALTER TABLE加了一列编辑器里敲新列名智能提示死活不出来。原因IntelliSense 本地缓存没刷新。ADS 为减少网络请求会把元数据缓存下来不会每次实时去拿。解决按CtrlShiftR手动刷新 IntelliSense 缓存。另外一个常见的连带问题某个登录的默认数据库指向了一个被删或不可访问的库导致连接即使成功进入编辑器也拿不到正确的元数据。这种场景在连接属性里把 Database 显式指定成 master 或目标库再跑一句ALTER LOGIN [你的登录名] WITH DEFAULT_DATABASE [master];把默认库改回来新连接就不会再走错库了。5.5 连 Azure SQL DWSynapse 专用池时的语法差异现象把 SQL Server 的建表脚本、索引语句放到 Azure SQL DW 上执行报各种不支持、语法不对。原因SQL DW 现在控制台里的名字叫 Synapse 专用 SQL 池它底层是 MPP大规模并行处理架构和单体 SQL Server 在物理存储、分布方式上完全不同。很多日常语法——普通非聚集索引、UPDATE STATISTICS的常规用法、部分系统 DMV——都不适用。解决连接层面没有区别一样是填xxxx.database.windows.net但写 SQL 时要换思路。建表必须指定DISTRIBUTION和CLUSTERED COLUMNSTORE INDEX大批量更新用CREATE TABLE AS (CTAS)重建表而不是逐行 UPDATE排查性能时不看sys.dm_exec_requests里的老办法要看 Synapse 自己的 DMV。一句话拿 SQL Server 的脚本直接搬到 DW 上属于“能连上但跑不对”的典型状态动手前先确认这台服务器是什么引擎。6. 最后一个小习惯把巡检脚本做成代码段用命令行直接跑这套方案里真正值得每天用的是一个不起眼的功能用户代码段。把高频的巡检 SQL 存成片段以后打两个字母就能调出整段脚本不用去翻旧文件或历史记录。以 SQL 语言的文件为例在命令面板里执行「用户代码段 SQL」把下面的 JSON 合并进sql.json{ 检查数据库空间: { prefix: sp, body: [ SELECT DB_NAME(database_id) AS db_name,, type_desc AS file_type,, SUM(size * 8) / 1024 AS size_mb, FROM sys.master_files, GROUP BY database_id, type_desc, ORDER BY size_mb DESC; ] } }prefix是触发词在查询编辑器里输入sp再按 Tabbody数组里的每一行就会按顺序插入。size * 8 / 1024把 8KB 页换算成 MBGROUP BY database_id, type_desc把数据文件和日志文件分开汇总。代码段的好处是脚本经过验证后固化下来不会每次凭记忆重敲而敲出不同版本。第二个习惯是用命令行直接打开文件跑查询。azuredatastudio 巡检.sql会直接用 ADS 打开对应脚本配合命令行装扩展换新机器五分钟就能恢复到一个顺手的状态。我现在接到一个新环境第一件事就是恢复连接配置、装扩展、导入代码段这三步。这套组合拳验证起来也简单建一张没什么用的临时表跑一遍代码段的查询看结果是否正常返回再改一条连接配置确认重连后仪表盘能刷出数据。每周五把 Notebook 巡检文档过一遍把磁盘空间和慢查询两张表贴进去就是一份不用额外写报告工具的周报素材。跨平台数据库管理这件事选对工具只是开始把工具固化成自己的流程才是分水岭。ADS 的价值不在某一两个功能而在它能让你在任意操作系统上用同一套编辑器、同一套脚本、同一套 Git 习惯去面对 SQL Server 和 Azure 系数据库。希望帮到你。本文还有配套的精品资源点击获取