简介: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 或 rpm,Debian/Ubuntu 系用 dpkg,RHEL/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,第一件事是建连接。左上角「新建连接」弹出来的对话框看着字段不多,但每一项都影响成败,我把日常最常用的一列参数放在下面:
| 字段 | 填什么 | 说明 |
|---|---|---|
| Server | localhost 或 主机名\实例名,Azure 上填 xxx.database.windows.net | 本机实例写 localhost;命名实例要带反斜杠 |
| Authentication type | SqlLogin 或 Integrated | SQL 登录适合大多数场景,域环境用 Integrated |
| User name | sa 或受限账号 | Azure SQL DB 的登录名要写成 user@server 格式 |
| Password | 对应密码 | 留空会在连接时弹出输入框 |
| Database | 留空或指定库名 | 留空时连到登录名的默认数据库 |
| Advanced | Encrypt、Trust Server Certificate | Linux 上很多人需要把 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/OFFLINE,recovery_model_desc显示简单/完整/大容量日志三种恢复模式——接手的第一个库如果发现是 SIMPLE 模式,备份策略就要重新评估。这两条语句能快速确认连接没有任何问题。
2.3 把常用连接放进配置文件:settings.json 的结构与迁移
很多人不知道 ADS 的连接信息是可以脱离界面直接迁移的。它在三套系统上都把配置放在用户目录下的 settings.json 里:Windows 是%APPDATA%\azuredatastudio\User\settings.json,macOS 是~/Library/Application Support/azuredatastudio/User/settings.json,Linux 是~/.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": "myadmin@my-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 是不是要被替代?答案是没有。两者定位不同,正确的做法是共存。我把选择边界列成一张表:
| 维度 | SSMS | Azure Data Studio |
|---|---|---|
| 支持系统 | 仅 Windows | Windows、macOS、Linux |
| 轻量程度 | 重,安装包大 | 轻,启动快 |
| 擅长领域 | 深度运维:作业、审计、策略、性能分析器 | 日常开发、跨平台连接、Notebook、Git 集成 |
| 扩展能力 | 弱,官方功能为主 | 强,扩展市场 |
| 更新频率 | 随 SQL Server 版本节奏 | 独立高频更新 |
| 适合角色 | DBA、生产变更 | 开发、数据分析、运维 |
判断标准很简单:要做新建作业、配置审计、看性能分析器这类深度管理,用 SSMS;要在一个非 Windows 环境里快速查数、改结构、复现问题,用 ADS。生产变更我一般会在 SSMS 里做,因为它对 SQL Server 功能覆盖最全,而日常开发和排查全部在 ADS 里完成。
本地测试建议装 SQL Server Express 免费版配合 ADS:Express 占资源小、支持数据库引擎,连进来和正式环境行为一致,开发机用它做实验最划算。
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-port=1433/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 为减少网络请求会把元数据缓存下来,不会每次实时去拿。
解决:按Ctrl+Shift+R手动刷新 IntelliSense 缓存。另外一个常见的连带问题:某个登录的默认数据库指向了一个被删或不可访问的库,导致连接即使成功进入,编辑器也拿不到正确的元数据。这种场景在连接属性里把 Database 显式指定成 master 或目标库,再跑一句:
ALTER LOGIN [你的登录名] WITH DEFAULT_DATABASE = [master];把默认库改回来,新连接就不会再走错库了。
5.5 连 Azure SQL DW(Synapse 专用池)时的语法差异
现象:把 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再按 Tab,body数组里的每一行就会按顺序插入。size * 8 / 1024把 8KB 页换算成 MB,GROUP BY database_id, type_desc把数据文件和日志文件分开汇总。代码段的好处是:脚本经过验证后固化下来,不会每次凭记忆重敲而敲出不同版本。
第二个习惯是用命令行直接打开文件跑查询。azuredatastudio 巡检.sql会直接用 ADS 打开对应脚本,配合命令行装扩展,换新机器五分钟就能恢复到一个顺手的状态。我现在接到一个新环境,第一件事就是恢复连接配置、装扩展、导入代码段这三步。
这套组合拳验证起来也简单:建一张没什么用的临时表,跑一遍代码段的查询,看结果是否正常返回;再改一条连接配置,确认重连后仪表盘能刷出数据。每周五把 Notebook 巡检文档过一遍,把磁盘空间和慢查询两张表贴进去,就是一份不用额外写报告工具的周报素材。
跨平台数据库管理这件事,选对工具只是开始,把工具固化成自己的流程才是分水岭。ADS 的价值不在某一两个功能,而在它能让你在任意操作系统上,用同一套编辑器、同一套脚本、同一套 Git 习惯去面对 SQL Server 和 Azure 系数据库。希望帮到你。
本文还有配套的精品资源,点击获取