- 数据库客户端
- 桌面应用
- 数据分析
【免费下载链接】azuredatastudio
Azure Data Studio is a data management and development tool with connectivity to popular cloud and on-premises databases. Azure Data Studio supports Windows, macOS, and Linux, with immediate capability to connect to Azure SQL and SQL Server. Browse the extension library for more database support options including MySQL, PostgreSQL, and MongoDB.
Azure Data Studio 是微软开源的跨平台数据管理与开发工具,覆盖 Windows、macOS、Linux 三平台,开箱即用即可连接 Azure SQL 与 SQL Server,并可通过扩展市场接入 MySQL、PostgreSQL、MongoDB 等更多数据库。本文以仓库 README.md 为主体骨架,结合 product.json、package.json、CHANGELOG.md 以及src/sql、cli、extensions等目录下的源码,系统梳理 Azure Data Studio 的核心能力、连接机制、查询编辑器与结果集处理、管理仪表板、备份恢复、扩展生态、命令行工具、本地化、遥测与隐私以及构建方式,帮助读者从"会用"深入到"理解其实现"。
项目定位与当前状态
Azure Data Studio 定位为"数据管理和开发工具",其核心场景是面向 Azure SQL 与 SQL Server 的连接、查询、管理与脚本开发。仓库根目录的 README.md 用一句话概括了产品边界:支持连接主流云上与本地数据库,内置对 Azure SQL 和 SQL Server 的即时连接能力,其余数据库类型通过扩展库提供。
需要特别注意 README 顶部的生命周期说明:Azure Data Studio 已于2026 年 2 月 28 日进入退休(retirement)状态,微软官方建议用户迁移到 Visual Studio Code 及 MSSQL 扩展。这一点在当前仓库的版本痕迹中也能得到印证:CHANGELOG.md 记载了 1.51.1 热修复版中加入"ADS 退休通知横幅"等改动。因此在阅读本文时,请将历史能力视作可借鉴的实现与设计参考,并将实际新项目规划建立在 VS Code + MSSQL 扩展的迁移路线上。
从源码结构看,本项目是 VS Code(上游基线 vscodeVersion 1.82.0,见 product.json)的深度分叉:src/vs保留了上游工作台与编辑器内核,src/sql则是 SQL 专用扩展层(约 1800 个文件,含 967 个 TypeScript 文件),extensions目录承载 mssql、azurecore、schema-compare、sql-database-projects、notebook 等二十余个第一方扩展,cli目录则是基于 Rust 编写的命令行与隧道工具。
功能亮点全景
README 的功能亮点清单定义了产品的 12 大能力维度,本节逐一展开,并在后文结合源码给出实现层面的印证:
- 跨平台数据库管理:Windows、macOS、Linux 三平台支持,且 README 特别强调"简单的 XCopy 部署",即复制即用、无需复杂安装器。
- SQL Server 连接管理:连接对话框、服务器组(Server Groups)、Azure 集成与已注册服务器(Registered Servers)。
- 对象资源管理器:架构浏览与上下文命令执行。
- T-SQL 查询编辑器:自动建议(autosuggestions)、错误诊断、悬停提示、格式化与 peek 定义等高级编码特性。
- 查询结果查看器:支持大数据集的网格、导出 JSON/CSV/Excel、查询计划与图表。
- 管理仪表板:可自定义小组件,支持钻取式可操作洞察。
- 可视化数据编辑器:直接在表格中插入、更新、删除行。
- 备份与恢复对话框:高级自定义、远程文件系统浏览,配置好的任务可立即执行或脚本化。
- 任务历史窗口:查看任务执行状态、完成结果、错误信息与任务 T-SQL 脚本。
- 脚本生成:为数据库对象生成 CREATE、SELECT、ALTER、DROP 语句。
- 工作区与 Git 集成:支持 T-SQL 脚本库管理与"在文件中查找"。
- 现代轻量级外壳:主题、用户设置、全屏支持、集成终端等。
下载与发布节奏
README 指向官方下载页获取安装包,并提供了变更日志与发布说明两条信息通道。在仓库中对应:
- 发布节奏与版本号记录在 CHANGELOG.md,从版本 1.41.x 一直记录到 1.51.1(2025 年 2 月发布),包含每次发布的 GA 版本号、发布日期、新增功能与修复列表。
- 根目录 package.json 声明了源码库自身版本
1.53.0,可作为与 CHANGELOG 对照的仓库基线。 - 产品元信息(应用名、数据目录名、Windows 注册值、AppId、协议
azuredatastudio-oss等)集中在 product.json,同时它声明了遥测开关enableTelemetry: false与扩展画廊服务地址。
从版本演进可以看到典型的"跟随上游 + 数据库特性自研"模式:例如 1.50.0 升级 Electron 至 v30.5.1、1.46.0 引入连接池与SQL Server: Clear Pooled Connections命令、1.47.0 合并 VS Code 1.80–1.82 的上游改进等。
连接管理与 SQL 提供程序架构
连接类型与认证方式
Azure Data Studio 的连接层面向 Azure SQL 与 SQL Server,支持包括 SQL 登录、Windows 认证、Azure Active Directory / Microsoft Entra(含 MFA)在内的多种认证方式。CHANGELOG.md 中的修复记录侧面印证了认证体系的存在与演进,例如 1.48.0 修复了 "Azure AD - Universal with MFA 在 RedHat Linux 上不可用"、修复了 "Active Directory Default 认证下 UserName 为空的 SqlLogin 错误";1.47.0 起将术语从 Azure AD 全面更新为 Microsoft Entra。
连接管理的主要实现位于 src/sql/workbench/contrib/connection 与 src/sql/platform/connection,由IConnectionManagementService统一负责连接生命周期。查询编辑器侧通过RunQueryOnConnectionMode、IConnectionCompletionOptions等接口约束"在连接上运行查询"的时序(见 src/sql/workbench/contrib/query/browser/queryActions.ts)。
服务器组与已注册服务器
服务器组用于把大量连接按逻辑分组管理,属于连接对话框与对象资源管理器的上层组织能力;已注册服务器则支持在 Object Explorer 的本地服务器视图中登记常用实例。这两项能力在 README 中被列为连接管理的一部分,与 Azure 集成(订阅、逻辑服务器、数据库的浏览)共同构成"云 + 本地"的统一连接入口。
提供程序机制与扩展数据库支持
README 明确说明 MySQL、PostgreSQL、MongoDB 等数据库支持来自扩展库。这套能力基于azdata扩展 API 中的数据协议(Data Management Protocol,DMP)提供程序注册机制:
- src/sql/azdata.d.ts 定义了
dataprotocol命名空间,扩展可通过registerConnectionProvider、registerQueryProvider、registerBackupProvider、registerRestoreProvider、registerObjectExplorerProvider、registerScriptingProvider、registerMetadataProvider、registerProfilerProvider等 API 向产品注册特定数据库的能力实现。 - 每个数据库类型对应一个 providerId,UI 层通过
getProvider(providerId, providerType)获取对应实现,从而让查询编辑器、备份恢复、对象资源管理器等核心 UI 与具体数据库解耦。
这一设计是"内置 SQL Server、扩展接入其余数据库"架构的关键:核心 UI 只依赖抽象提供程序接口,数据库能力以扩展形式增量注入。
T-SQL 查询编辑器与结果集
编辑器实现:双编辑区布局
查询编辑器是产品最核心的开发工作区,其实现类是 src/sql/workbench/contrib/query/browser/queryEditor.ts 中的QueryEditor(注册 IDworkbench.editor.queryEditor)。从类注释与字段可以看出它采用"双编辑区"结构:
- 上半区是一个
TextResourceEditor/TextFileEditor,负责 SQL 脚本的编辑体验(语法高亮、自动建议、错误诊断、悬停提示、格式化、peek 定义); - 下半区是
QueryResultsEditor,负责结果网格、消息面板与查询计划的展示; - 两个编辑区由
SplitView承载,并持久化用户调整的结果区高度(queryEditorViewState偏好键)。
编码特性中的"自动建议、错误诊断、悬停提示、格式化与 peek 定义"由编辑器语言服务与 mssql 扩展的 LanguageService 提供,属于查询编辑体验中"编辑器内核(vs) + 语言能力(sql/extensions)"的分层协作。
结果查看器:网格、导出与图表
结果查看器支持大数据集网格展示、导出 JSON/CSV/Excel、查询计划(Execution Plan)与图表(Charting):
- 网格底层依赖高性能表格组件 SlickGrid(package.json 中依赖
Microsoft/SlickGrid.ADS),结果面板实现在 src/sql/workbench/contrib/query/browser/gridPanel.ts。 - 导出功能对应 mssql 扩展的
SerializationFeature(见 extensions/mssql/src/features.ts 与 sqlToolsServer.ts),负责将结果集序列化为 CSV/JSON/Excel 等格式;CHANGELOG.md 记录了后续版本对"保存结果为 Excel"选项的持续增强。 - 图表功能实现在 src/sql/workbench/contrib/charts,其操作与交互集中在
actions.ts、chartView.ts,图表渲染依赖 chart.js(package.json)。
执行与消息
查询执行通过IQueryManagementService分发到对应数据库提供程序的QueryProvider,结果与消息分别进入结果网格与消息面板(messagePanel.ts)。任务执行状态、错误消息与 T-SQL 脚本则汇入任务历史窗口,由 src/sql/workbench/contrib/tasks 管理。
对象资源管理器与脚本生成
对象资源管理器(Object Explorer)提供数据库对象(数据库、表、视图、存储过程、函数等)的树形浏览,并支持在节点上执行上下文命令,例如管理(Manage,打开仪表板)、新建查询、生成脚本等。其服务实现位于 src/sql/workbench/services/objectExplorer,核心 UI 与动作位于 src/sql/workbench/contrib/objectExplorer。
脚本生成能力通过ScriptingProvider提供(注册 API 见 src/sql/azdata.d.ts),可为对象生成 CREATE、SELECT、ALTER、DROP 语句,实现位于 src/sql/workbench/contrib/scripting。与对象资源管理器"右键即脚本"的交互体验相辅相成。
管理仪表板、可视化数据编辑与备份恢复
管理仪表板
管理仪表板(Management Dashboard)是 README 强调的"可自定义小组件 + 钻取式洞察"能力:打开某个连接或数据库的"管理"页面后,用户可配置展示空间使用情况、性能计数器、查询活动等小组件。相关实现分布在 src/sql/workbench/contrib/dashboard(UI 与小组件)与 src/sql/workbench/services/dashboard(服务层)。历史上甚至出现过社区贡献的"DB 大小组件默认排序"修复(见 README 致谢列表),说明小组件体系具备较强的可扩展性。
可视化数据编辑
可视化数据编辑器(Edit Data)让用户无需手写 SQL 即可直接在结果网格中插入、更新、删除行。实现位于 src/sql/workbench/contrib/editData,其中editDataEditor.ts负责编辑会话生命周期,editDataGridPanel.ts与gridActions.ts负责网格编辑交互;CHANGELOG.md 也记录了如"删除行后焦点错位"等编辑场景的迭代修复。
备份与恢复
备份与恢复对话框支持高级自定义、远程文件系统浏览,并可将配置好的任务"立即执行或脚本化"。UI 与动作位于 src/sql/workbench/contrib/backup 与 src/sql/workbench/contrib/restore,提供程序侧通过BackupProvider/RestoreProvider抽象(src/sql/azdata.d.ts)对接具体数据库实现。从 CHANGELOG.md 可以看到该能力的持续演进:1.48.0 为恢复对话框新增了"S3 兼容存储恢复"与"从 URL 恢复 SQL Server 数据库"、在对象资源管理器数据库右键菜单中新增"恢复数据库";更早版本还引入过 attach/detach 数据库(预览)等能力。
任务历史
任务历史窗口集中展示任务执行状态、完成结果与错误信息,并支持查看任务的 T-SQL 脚本。实现位于 src/sql/workbench/contrib/tasks,任务注册体系在 src/sql/workbench/services/tasks;1.47.0 的改动"任务完成后通知自动关闭"说明任务与通知系统有联动。
工作区、Git 集成与内置终端
基于 VS Code 内核,Azure Data Studio 天然继承:
- 工作区与文件管理:以文件夹/工作区为单位组织 T-SQL 脚本库,配合"在文件中查找"(Find In Files)进行跨脚本检索。
- Git 集成:完整的源代码管理面板,可对脚本库做提交、分支、同步等操作(实现位于 extensions/git)。
- 集成终端:基于 xterm(package.json 依赖
xterm 5.3.0-beta.61及 WebGL 等附加组件)的终端面板。 - 主题与用户设置:继承 VS Code 的设置体系与主题体系,仓库内置 theme-defaults、theme-monokai、theme-solarized-dark 等官方主题扩展。
扩展生态与本地化
扩展市场与内置推荐
README 将"扩展库"定位为数据库支持扩展的入口。仓库侧证据包括:
- product.json 的
recommendedExtensions字段列出了一组推荐扩展,覆盖 admin-pack、agent、arc、azcli、cms、dacpac、import、profiler、query-history、schema-compare、sql-assessment、sql-database-projects、sql-migration、machine-learning、datavirtualization、powershell,以及第三方 Redgate.sql-prompt、Redgate.sql-search、SentryOne.plan-explorer 等,可视为官方对典型场景(项目管理、模式比较、迁移、机器学习、性能调优)的推荐组合。 - 扩展画廊服务地址配置在 product.json,并同步维护于 extensionsGallery.json。
- 仓库
extensions目录本身就是第一方扩展的集合,每个扩展拥有独立的 package.json、tsconfig、webpack 配置与 yarn.lock,其中 extensions/mssql 是最核心的 SQL Server 能力提供者,内部按能力拆分为 connection、dacfx、schemaCompare、sqlAssessment、sqlProjects、objectManagement、tableDesigner、queryStore、azureBlob 等子模块。
语言包与 10 语言本地化
README 说明产品本地化为 10 种语言:法语、意大利语、德语、西班牙语、简体中文、繁体中文、日语、韩语、俄语和巴西葡萄牙语。语言包通过扩展市场安装,安装后提示重启以应用新语言。仓库侧对应:
- i18n 目录中每个
ads-language-pack-*子目录都是一个完整的语言包扩展(含 65 个 JSON 本地化文件、说明文档与图标)。 i18n/chs、i18n/deu、i18n/jpn等子目录则是按语言的翻译键值表(如简体中文 426 个 JSON 文件)。- 上游 VS Code 的本地化机制(vscode-nls)与"语言包 + 重启生效"的用户流程在 package.json 依赖(
vscode-nls-dev)中得到支撑。
命令行工具与远程隧道(Rust CLI)
仓库cli目录是一个基于 Rust(edition 2021,见 cli/Cargo.toml)实现的命令行工具,二进制名为code。这与"从命令行启动 ADS、支持 Connect 命令"(1.48.0 新特性)以及产品向 VS Code 系工具链靠拢的方向一致。从 cli/src/commands/args.rs 可以还原其主要命令面:
code [options] [paths...]:打开一个或多个文件、文件夹或 URI;支持从标准输入读取(echo Hello World | code -)。code tunnel:创建可从任意地点访问的隧道(基于 dev-tunnels,见 cli/Cargo.toml),相关实现位于 cli/src/tunnels。code ext:管理编辑器扩展。code status:输出进程使用情况与诊断信息。code version:切换使用的编辑器版本。code serve-web:在本地运行一个 Web 版编辑器,默认监听localhost:8000(--port可指定,传 0 则使用随机空闲端口),并支持--host、--socket-path、--connection-token(请求鉴权密钥)等参数。- 全局选项包括日志级别、
--verbose、遥测开关(--disable-telemetry或--telemetry-level),后者会被映射为服务端TelemetryLevel::Off等取值(见 cli/src/commands/args.rs)。
CLI 依赖clap做参数解析、tokio做异步运行时、reqwest做 HTTP 客户端、keyring做凭据存储,并针对 Windows(winreg/winapi)、macOS(core-foundation)、Linux(zbus)分别引入平台依赖。
遥测、隐私与禁用方式
README 明确说明产品会收集遥测数据(例如用于诊断启动缓慢、辅助功能优先级排序),并提供了关闭遥测的指引。仓库侧的实现与配置证据包括:
- product.json 中
enableTelemetry: false是"开源/内建分发默认关闭遥测"的配置位,同时aiConfig.ariaKey与telemetryOptOutUrl指向遥测基础设施。 - 1ds SDK(
@microsoft/1ds-core-js、@microsoft/1ds-post-js,见 package.json)是遥测上报的底层实现。 - CLI 层提供
--disable-telemetry与--telemetry-level选项,Web 服务端启动参数中也有对应telemetry_level配置。 - 隐私声明与许可在 PRIVACY.md 与 LICENSE.txt(MIT 协议,见 README License 一节)。
需要强调的是,enableTelemetry: false只代表仓库默认配置,最终行为取决于具体构建分发的设置;如需彻底关闭遥测,仍应按照 README 指引在安装后的用户设置中显式禁用。
从源码构建与开发贡献
虽然 README 将完整的构建与调试流程指向 Wiki 中的 How to Contribute 文档,但仓库内可以直接使用的构建入口包括:
- 根目录 package.json 的 scripts:
yarn compile(gulp 编译)、yarn watch/watchd(增量编译,watchd基于 deemon 支持崩溃自动重启)、yarn gulp、yarn electron、yarn smoketest(冒烟测试)、yarn core-ci/extensions-ci(CI 任务)、yarn hygiene(代码卫生检查)等。 - 平台启动脚本:scripts/code.sh(macOS/Linux)、scripts/code.bat(Windows)、scripts/code-server.sh 与 scripts/code-web.sh(服务端/Web 模式)。以 scripts/code.sh 为例,它会读取
product.json中的nameLong/applicationName定位 Electron 可执行文件,设置VSCODE_DEV=1、NODE_ENV=development等开发环境变量,然后以仓库根目录为工作目录启动。 - 根目录 gulpfile.js 承载 compile、minify、CI 等 gulp 任务定义。
贡献流程方面,CONTRIBUTING.md 说明了提交 issue 与 PR 的规范:先检索已有 issue、单个问题对应单个 issue、附上可复现步骤与截图/动图、提供代码片段、通过 Help 菜单的 Report Issue 自动附带版本与系统信息等。源码采用 MIT 许可,上游依赖清单见 ThirdPartyNotices.txt。
从源码结构推断的整体架构
综合上述证据,可以从源码结构还原 Azure Data Studio 的分层架构:
- 编辑器内核层(src/vs):继承自 VS Code 1.82 基线,提供工作台、编辑器、终端、Git、设置、主题等通用能力。
- SQL 平台层(src/sql):包括
platform(连接、凭据、能力、遥测等平台服务)、workbench(查询编辑器、对象资源管理器、仪表板、备份恢复、编辑数据、图表、任务、notebook 等产品功能)、azdata.d.ts(扩展 API 契约)。 - 扩展层(extensions):mssql(SQL Server 语言服务与 SQL Tools Service 客户端)、azurecore(Azure 资源浏览)、schema-compare、dacpac、sql-database-projects、notebook 等第一方扩展,以及市场中的第三方扩展。
- CLI 层(cli):Rust 编写的命令行与隧道工具,提供隧道、扩展管理、Web 服务等非 GUI 入口。
- 基础设施:i18n(语言包与翻译键值)、samples(示例扩展与笔记本)、scripts(构建与测试脚本)、test(自动化与冒烟测试)。
其中查询编辑器是典型的"内核 + 产品层"协作样例:QueryEditor同时托管文本编辑子编辑器与QueryResultsEditor子编辑器,文本编辑复用 VS Code 内核的编辑器能力,查询执行与结果序列化则通过 mssql 扩展的 SQL Tools Service(基于SqlOpsDataClient与 vscode-languageclient,见 extensions/mssql/src/sqlToolsServer.ts)完成,最终按数据协议将结果回填到 SlickGrid 网格。
结语
Azure Data Studio 以 VS Code 内核为底座,叠加了面向 SQL Server 与 Azure SQL 的数据协议提供程序体系,从而在查询编辑器、对象资源管理器、仪表板、备份恢复、可视化编辑、脚本生成等场景中提供开箱即用的体验,并通过扩展机制与 azdata API 将能力边界扩展至 MySQL、PostgreSQL、MongoDB 等更多数据库。即便产品已进入退休周期,其"轻量内核 + 数据库提供程序 + 扩展生态"的架构思路、azdata扩展 API 的设计以及 Rust CLI 与隧道的实现,对于理解微软数据工具链的演进仍然具有参考价值——而后续的数据库开发工作流,应按照 README 指引平滑迁移到 Visual Studio Code 与 MSSQL 扩展。
- 数据库客户端
- 桌面应用
- 数据分析
【免费下载链接】azuredatastudio
Azure Data Studio is a data management and development tool with connectivity to popular cloud and on-premises databases. Azure Data Studio supports Windows, macOS, and Linux, with immediate capability to connect to Azure SQL and SQL Server. Browse the extension library for more database support options including MySQL, PostgreSQL, and MongoDB.
相关推荐
【亲测免费】 Azure Data Studio:跨平台的数据管理与开发利器
Azure Data Studio:跨平台的数据管理与开发利器 项目介绍 Azure Data Studio 是一款由微软开发的数据管理和开发工具,它提供了与流
数据库客户端桌面应用数据分析Beekeeper Studio:一款跨平台数据库管理工具
Beekeeper Studio:一款跨平台数据库管理工具 Beekeeper Studio 是一个开源的跨平台 SQL 编辑器和数据库管理工具,适用于 Lin
桌面应用数据库客户端开发工具Azure Data Studio 终极指南:10分钟掌握跨平台数据库管理神器
Azure Data Studio 终极指南:10分钟掌握跨平台数据库管理神器 Azure Data Studio 是一款功能强大的跨平台数据库管理和开发工具,
数据库客户端桌面应用数据分析
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考