数据库客户端桌面应用数据分析【免费下载链接】azuredatastudioAzure 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.项目地址https://gitcode.com/gh_mirrors/az/azuredatastudio点击查看免费下载导读本文基于 Azure Data Studio 仓库内extensions/azcli的官方 README 与其源码实现系统讲解“Azure CLI 扩展”azcli如何在 Azure Data Studio 中提供对 Azure CLIaz的内嵌支持包括扩展的定位与安装约束、四个可调配置项及其影响、az与arcdata扩展的自动发现/自动安装机制、暴露给其他扩展的编程 API以及与资源部署resource-deployment扩展的集成方式。读完本文你既能掌握该扩展在 Azure Data Studio 中的配置与使用方式也能从源码层面理解其底层命令执行管道与版本解析逻辑。一、扩展定位在 Azure Data Studio 中使用 Azure CLI根据 extensions/azcli/README.md 的 Overview 描述该扩展的核心使命非常明确为 Azure Data Studio 增加对 Azure CLIaz的支持使 ADS 可以调用本机安装的az命令行工具完成 Azure 相关操作尤其是 Azure Arc 数据服务Arc Data Controller、SQL 托管实例、PostgreSQL 等的管理与部署场景。从清单文件 extensions/azcli/package.json 可以进一步确认扩展的工程属性扩展名azcli发布者Microsoft当前版本1.8.0引擎约束vscode: *azdata: 1.35.0即要求 Azure Data Studio其核心 API 对应 azdata版本不低于 1.35.0激活机制activationEvents为[*]意味着扩展在任意事件触发时都会被激活启动阶段即会尝试发现本机az扩展依赖extensionDependencies声明依赖microsoft.resource-deployment用于向资源部署工作流提供 Arc 数据控制器配置文件的选项来源工作区能力virtualWorkspaces: false、untrustedWorkspaces.supported: true即不支持虚拟工作区、但可运行于不受信任的工作区。README 中其余章节为 Code of Conduct微软开源行为准则、Privacy Statement隐私声明与 MIT License版权归 Microsoft Corporation采用 LICENSE.txt 中的 MIT 许可等标准声明本文不再赘述以下内容全部围绕其核心功能展开。二、扩展的配置项安装与更新提示策略azcli 扩展通过azcli.*配置段向用户暴露四个设置项全部定义在 extensions/azcli/package.json 的contributes.configuration中其文案定义位于 package.nls.json。各配置项含义如下配置键类型默认值可选值含义azcli.azInstallstringpromptprompt/dontPrompt是否在检测不到 Azure CLI 时提示用户安装azcli.arcdataInstallstringpromptprompt/dontPrompt是否提示下载 Azure CLI 的arcdata扩展azcli.arcdataUpdatestringpromptprompt/dontPrompt是否在arcdata扩展有新版本时提示更新azcli.logDebugInfobooleanfalsetrue/false是否将所有执行的az命令调试信息输出到输出通道一个典型的设置示例写入 Azure Data Studio 的settings.json{ azcli.azInstall: prompt, azcli.arcdataInstall: prompt, azcli.arcdataUpdate: dontPrompt, azcli.logDebugInfo: true }从源码层面看这些配置的作用机制非常直观。在 extensions/azcli/src/constants.ts 中定义配置段名为azcli键名azInstall、arcdataInstall、arcdataUpdate、logDebugInfo在 extensions/azcli/src/az.ts 中通过vscode.workspace.getConfiguration(azcli)读取配置AzDeployOption枚举即对应prompt/dontPrompt两个取值。当用户在“不再询问”的提示中选择了doNotAskAgain时扩展会通过setAzConfig将对应键持久化为dontPrompt写入全局配置az.ts。azcli.logDebugInfo的实际影响在于 az.ts 的executeAzCommand开启后会在每次执行的az命令参数末尾追加--debug并配合 common/logger.ts 把命令与输出记录到 ADS 输出通道便于排查问题。三、az与arcdata的自动发现、提示与安装机制扩展启动激活时extension.ts会立即异步执行checkAndInstallAz()该函数不阻塞扩展激活避免在缺少用户输入时卡住启动流程。其完整逻辑位于 extensions/azcli/src/az.ts调用findAzAndArc()查找已安装的azaz.ts若抛出NoAzureCLIArcExtError表示az已安装但缺少arcdata扩展则按配置提示用户安装arcdata成功后重新查找若抛出NoAzureCLIError表示本机没有az则提示用户安装 Azure CLI成功后重新查找用户拒绝安装时返回undefined后续依赖该 API 的调用会通过校验抛出明确的错误提示。查找流程findSpecificAzAndArcaz.ts的细节如下使用which在 PATH 中搜索az.cmdWindows或az其他平台见 common/utils.ts执行az --version并解析输出parseVersion用正则/azure-cli\s*(\d*.\d*.\d*)/提取 Azure CLI 版本parseArcExtensionVersion用/arcdata\s*(\d*.\d*.\d*)/提取arcdata扩展版本az.ts若arcdata版本缺失抛出NoAzureCLIArcExtError否则静默执行az extension update --name arcdata尝试升级到最新成功后构造AzTool对象并通过setContext将az.found、az.arcfound上下文键置为trueaz.ts用于控制命令面板中相关命令的可用性。分平台的az安装逻辑az.ts同样值得注意扩展并非只提示而是能直接代劳安装Windows从https://aka.ms/installazurecliwindows常量见 constants.ts通过HttpClient.downloadFile下载安装包再以管理员权限静默执行msiexec /qn /i 包路径 /lvx 日志路径安装日志写入临时目录的ads_az_install_logs.logmacOS依次执行brew update与brew install azure-cliLinux通过sudo apt-get update、安装ca-certificates curl apt-transport-https lsb-release gnupg、导入 Microsoft 签名密钥、写入/etc/apt/sources.list.d/azure-cli.list软件源最后apt-get install azure-cli其他平台抛出platformUnsupported错误。arcdata扩展的安装则统一为执行az extension add --name arcdataaz.ts。提示交互由promptToInstallAz/promptToInstallArcdata完成az.ts用户主动触发时提供“是/否”两个选项启动时自动触发则提供“是/稍后/不再询问”三个选项Windows 下退出码 1602用户取消安装不会被当作错误弹出警告。四、命令执行管道与错误模型所有az命令最终都经由统一封装执行common/childProcess.ts 的executeCommand使用child_process.spawnshell: true执行命令以数组形式逐项传入参数支持注入额外环境变量非零退出码会被包装为ExitCodeError携带退出码与 stderr权限敏感命令如 Windowsmsiexec、Linuxapt-get通过executeSudoCommand调用sudo-prompt以应用名Azure Data Studio弹出系统提权提示childProcess.tscommon/httpClient.ts 负责下载 Windows 安装包依赖request库。AzTool.executeCommandaz.ts在调用底层命令时统一追加--output json并将 stdout 解析为 JSON 返回AzOutputR结构stdout/stderr/ 可选code类型见 az-ext.d.ts。解析失败不会直接崩溃而是记录日志后原样返回文本。若命令因az二进制被删除而报退出码错误扩展会校验文件是否存在不存在时把az.found上下文置为false并抛出NoAzureCLIError。executeSqlMiShow还做了直接/间接模式输出归一化az.tsAzure Arc 的 SQL 托管实例在直接连接模式ARM API与间接模式Kubernetes CRD下az sql mi-arc show的输出结构不同扩展会依据是否存在properties字段判断模式统一转换为{ name, spec, status }形态屏蔽底层差异。五、对外扩展 API其他扩展如何调用 azcliazcli 通过activate()的返回值暴露编程接口extension.ts类型契约完整定义在 extensions/azcli/src/typings/az-ext.d.ts 的IExtension/IAzApi接口中注意文件头部注明该定义并非 vscode 那样的硬性约束属软约定。其能力矩阵如下域方法对应az命令arcdata.dc.endpointlist(namespace)az arcdata dc endpoint list --k8s-namespace ns --use-k8sarcdata.dc.configlist()/show(namespace)az arcdata dc config list/az arcdata dc config show --k8s-namespace ns --use-k8sarcdata.dclistUpgrades(namespace)/upgrade(desiredVersion, name, resourceGroup?, namespace?)az arcdata dc list-upgrades/az arcdata dc upgrade --desired-version ver --name name [...]postgres.serverarcdelete/list/show/updateaz postgres server-arc ...删除强制带--force --use-k8ssql.miarcdelete/list/show/update/upgradeaz sql mi-arc ...同时支持 ARM 的--resource-group与 K8s 的--k8s-namespace --use-k8s两套参数sql.midbarcrestore(name, {destName, managedInstance, time, noWait, dryRun}, namespace)az sql midb-arc restore ...monitor.logAnalytics.workspacelist(resourceGroup?, subscription?)az monitor log-analytics workspace list [...]工具信息getPath()/getSemVersionAz()/getSemVersionArc()/version()返回az路径、Azure CLI 与 arcdata 扩展的语义化版本、az --version原始输出每个方法都先await localAzDiscovered等待启动时的自动发现完成再通过validateAzapi.ts校验az是否可用最后转发给缓存的AzTool。已发现的工具实例存放在 services/azToolService.ts 的AzToolService中用户也可通过命令面板执行az.install命令extension.ts主动触发安装流程。az-ext.d.ts还为调用方定义了丰富的返回类型与注释示例例如DcEndpointListResult管理代理端点、SqlMiListResult{ name, replicas, serverEndpoint, state }、PostgresServerListResult{ name, state, workers }、DcListUpgradesResult{ versions, currentVersion, dates }日期格式如03/08/2022以及SqlMiShowResult/SqlMiShowResultDirect/SqlMiShowResultIndirect等调用方可直接据此获得类型安全的 JSON 结果。六、与 resource-deployment 的集成Arc 配置选项源azcli 的另一个重要职责是向 resource-deployment 扩展提供“Arc 数据控制器配置”的选项来源。在 extension.ts 中扩展获取 resource-deployment 的导出 API并注册了ArcControllerConfigProfilesOptionsSource。该提供者providers/arcControllerConfigProfilesOptionsSource.ts以azcli.arc.controller.config.profiles作为选项源 id与 package.json 中resourceDeploymentOptionsSources声明对应其getOptions()直接调用az arcdata dc config list并返回配置文件列表。这样当用户在资源部署向导中创建 Arc 数据控制器时扩展内置的配置方案下拉项即可实时来源于本机az环境实现工具链与 UI 工作流的无缝衔接。七、测试与可验证性扩展自带完整的单元测试可作为理解其行为的另一入口目录 extensions/azcli/src/testaz.test.ts覆盖az查找、版本解析parseVersion、parseArcExtensionVersion、parseDcListUpgrades、parseCurrentVersion等、安装/提示流程与命令参数组装逻辑api.test.ts验证扩展 API 的校验与转发行为common 下的childProcess.test.ts、httpClient.test.ts、promise.test.ts、utils.test.ts测试命令执行、下载与工具函数。测试栈由 package.json 的 devDependencies 可见mochashouldsinontypemoq模拟 vscode 环境nock拦截 HTTP 下载请求microsoft/vscodetestcover覆盖率统计。八、适用前提与注意事项结合 README 与源码使用/集成 azcli 扩展需要明确以下几点该扩展的完整能力依赖本机安装的Azure CLI如未安装扩展可在 Windows/macOS/Linux 三平台引导安装见第三节但相关提示行为由azcli.azInstall等配置项控制Azure Arc 数据服务场景arcdata.*、sql mi-arc、postgres server-arc等 API还需要az具备arcdata 扩展扩展会按配置提示安装并静默尝试更新az.ts扩展以 JSON 输出解析az结果调用方拿到的是结构化对象而非文本注意--output json对某些删除类命令会解析失败此时返回原始 stdout 文本属设计内行为配置azcli.logDebugInfo true可在 ADS 输出通道观察每一步实际执行的az命令及参数是排查集成问题的最直接手段。总结extensions/azcli是 Azure Data Studio 数据工具链中负责“与 Azure CLI 桥接”的关键组件它以极小的表面4 个配置项、1 条az.install命令、一个编程 API封装了az的发现、安装、升级、调用与输出归一化等全部复杂逻辑并通过 resource-deployment 的选项源机制让 Arc 数据控制器的部署体验保持前后一致。对希望在其他 ADS 扩展中复用 Azure CLI 能力的开发者而言az-ext.d.ts 与 api.ts 就是最权威的契约参考。赞分享数据库客户端桌面应用数据分析【免费下载链接】azuredatastudioAzure 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.项目地址https://gitcode.com/gh_mirrors/az/azuredatastudio点击查看免费下载相关推荐Spaceship Prompt Azure 段az section基于 Azure CLI 订阅的云环境提示实现与配置指南Spaceship Prompt Azure 段 az section基于 Azure CLI 订阅的云环境提示实现与配置指南 Spaceship Pro开发工具Azure Data Studio 中 Azure SQL Edge 部署扩展实战基于 Notebook 的六大部署场景与配置详解Azure Data Studio 中 Azure SQL Edge 部署扩展实战基于 Notebook 的六大部署场景与配置详解 Azure SQL Edg数据库客户端桌面应用数据分析Azure Data Studio 与 Azure Monitor 集成实时监控数据库性能的完整方案Azure Data Studio 与 Azure Monitor 集成实时监控数据库性能的完整方案 你是否还在为数据库性能问题排查而烦恼当业务高峰期数据库数据库客户端桌面应用数据分析上一篇Effector与GraphQL集成现代全栈开发的完美组合下一篇Node.js桌面自动化终极指南RobotJS深度解析与实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
