示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载SQL Assessment API 允许通过规则集ruleset中的探针probe收集评估数据而service要求Service Requirement用于声明探针运行所依赖的 SQL Server 服务从而在服务缺失或未运行时自动跳过探针避免评估流程中断。本文以仓库 ServiceRequirement.md 为核心结合 ProbeRequirements 目录、自动变量文档与默认规则集源码系统讲解服务要求的名称格式、全部受支持的服务值、JSON 配置写法以及它如何与attr::service::*自动变量联动帮助读者在自定义探针与规则时正确、精准地控制评估行为。一、探针要求Probe Requirements机制概览在 SQL Assessment API 中探针负责从目标服务器或数据库收集数据检查check则通过条件表达式分析这些数据。默认情况下探针的任何执行错误都会立即终止整个评估流程这会导致后续检查无法运行、结果不完整。例如一个执行DBCC DBINFO(TargetName) WITH TABLERESULTS,NO_INFOMSGS的探针如果当前用户没有sysadmin角色就会报错并中断评估见 ProbeRequirements/README.md。探针要求机制正是为应对这类场景而设计在探针实现中显式声明其依赖条件如角色、权限、功能特性、服务SQL Assessment API 会在运行探针前检查这些条件是否满足。若不满足则跳过该探针及其依赖的所有检查避免评估中断。根据 Probe.md 的定义探针实现probe implementation上有两个承载要求的属性属性语义条件不满足时的行为requires显式的功能性要求探针不执行所有依赖该探针的检查被跳过并返回一条警告runFor显式的逻辑性要求探针实现不执行立即返回空结果集不产生警告二者的要求格式完全相同区别仅在于是否产生警告。例如当某个探针只对启用了 Always On 可用性组HADR 功能的实例有意义时用requires会让每个未参与 HADR 的实例都产生一条令人困惑的警告改用runFor后探针会静默跳过并返回空结果集见 ProbeRequirements/README.md。每个要求由 JSON 对象的一个属性表示属性名即要求名称属性值是字符串数组列出允许的值。例如requires: { server permission: [ ALTER TABLE, ADMINISTER BULK OPERATIONS ] }SQL Assessment API 支持四类要求role角色、permission权限、feature功能特性和service服务详见 ProbeRequirements/README.md。本文聚焦service类型。二、service 要求的名称格式与 JSON 语法根据 ServiceRequirement.mdservice要求的名称格式为service即固定的字面量service无变量部分、无可选部分。其用法是作为requires或runFor属性下的一个键值为服务名组成的数组runFor: { service: [ ReportServer ] }该示例出自 ServiceRequirement.md表示仅当目标实例上存在且运行SQL Server Reporting Services 服务时才执行该探针否则探针立即返回空结果集。与role、feature等要求一样service要求可以出现在探针实现的requires产生警告或runFor静默跳过属性中也可以在同一探针中与其他要求组合使用。要求之间是全部满足AND的关系——SQL Assessment API 会检查所有要求是否被满足任一不满足即触发跳过逻辑。三、受支持的服务值Supported Valuesservice要求的取值对应 SQL Server 在 Windows 上注册的各类 Windows 服务。文档明确列出的受支持值如下见 ServiceRequirement.md服务键对应服务说明MSSQLSQL Server 数据库引擎服务SQL Server 实例的核心数据库服务SQLAgentSQL Server Agent 服务负责执行作业、监视 SQL Server、触发警报、实现管理任务自动化MSOLAPSQL Server Analysis Services提供联机分析处理OLAP与数据挖掘功能ReportServerSQL Server Reporting Services负责报表的管理、执行、创建、计划与交付MsDtsServerSQL Server Integration Services为 Integration Services 包存储与执行提供管理支持MSSQLFDLauncher全文筛选器守护进程启动器服务为全文索引提供文档筛选与断字支持SQLBrowserSQL Server Browser 服务名称解析服务向客户端提供 SQL Server 连接信息这些服务键在默认规则集中被大量引用。例如 DefaultRuleset.csv 中的BrowserSvcStoped、DtsSvcStoped、FullTextSvcStoped、OlapSvcStoped、RsSvcStoped、SqlSvcAccNotRecommended等规则均围绕这些服务键对应的状态与运行账户展开评估。以AgentSvcStoped规则为例其目标平台限定为 WindowsServer,Windows消息为SQL Server Agent service is stopped这正体现了service要求在默认规则集中的典型应用场景。注意服务值面向Windows 平台上的 SQL Server。Linux 上的 SQL Server 没有同名 Windows 服务因此涉及服务状态的规则通常通过目标过滤器限定在 Windows 平台见 DefaultRuleset.csv 中Platform列自定义规则时也应遵循这一平台约束。四、实战示例按服务状态控制探针执行4.1 在 runFor 中按服务过滤静默跳过最常见的用法是让探针仅在目标服务存在时运行。以 Reporting Services 为例RsEndpoints: [ { type: SQL, target: { type: Server }, implementation: { query: … }, runFor: { service: [ ReportServer ] } } ]当目标实例未安装或未运行 Reporting Services 时探针不会执行查询而是直接返回空结果集且不产生任何警告评估流程平稳继续。4.2 在 requires 中声明硬性依赖带警告如果某个探针的数据是某些检查的硬性前提缺失时希望用户明确知晓则应使用requiresrequires: { service: [ SQLAgent, MSSQL ] }当任一服务不满足时探针被跳过、依赖它的检查被跳过同时返回一条警告提示用户评估结果的完整度受到影响。4.3 与其他要求组合service可与role、permission、feature组合使用。例如同时要求 HADR 功能与 SQL Server 引擎服务runFor: { feature: [ HADR ], service: [ MSSQL ] }功能要求feature的受支持值与写法可参考 FeatureRequirement.md角色与权限要求的完整语法可参考 RoleRequirement.md 与 PermissionRequirement.md。五、与 attr::service::* 自动变量的联动service要求不仅是执行开关还向规则引擎注入了一组与目标服务相关的自动变量。根据 AttrService.md在探针声明了服务要求后attr::service::*命名空间下会提供以下变量key为上表中的服务键变量名类型描述attr::service::_key_bool该服务是否存在attr::service::_key_.namestring服务的实际名称attr::service::_key_.accountstring该服务使用的用户账户名这些变量可用于检查的condition表达式与message消息模板中实现基于服务状态的动态判定。默认规则集中有大量此类用例。例如 DefaultRuleset.csv 中SqlSvcAccNotSupported规则的消息为SQL Server Database Engine service uses not supported account Current account {attr::service::MSSQL.account} is not supported其逻辑是若 SQL Server 引擎服务以NT AUTHORITY\LOCALSERVICE、NT AUTHORITY\SYSTEM或NT AUTHORITY\NETWORKSERVICE账户运行则触发建议。同样AgentSvcAccNotRecommended、FullTextSvcAccSame、DtsSvcAccSame、OlapSvcAccSame、RsSvcAccSame等规则分别对SQLAgent、MSSQLFDLauncher、MsDtsServer、MSOLAP、ReportServer的运行账户进行检查。AttrService.md 给出了一个完整的自定义规则示例当 SQL Server Agent 服务存在且运行在本地服务账户下时报告不支持该账户{ message: Account {attr::service::SQLAgent.account} is not supported for SQL Server Agent service., localServiceAccount: NT AUTHORITY\\LOCALSERVICE, condition: [ { not: attr::service::SQLAgent }, { ine: [ attr::service::SQLAgent.account, localServiceAccount ]} ], probes: [ IsClusteredServer ] }其中{ not: attr::service::SQLAgent }利用布尔型自动变量判断服务存在性ine运算符比较当前账户与本地服务账户。该文档还提供了针对群集服务器的扩展版本将NT AUTHORITY\SYSTEM、LOCALSYSTEM、NT AUTHORITY\NETWORKSERVICE一并列为不支持账户。由此可见service要求与attr::service::*变量共同构成了一套完整的服务感知规则编写基础设施。六、与其他要求类型的对比与选择要求类型名称格式用途典型示例serviceservice探针依赖的 SQL Server Windows 服务service: [ ReportServer ]featurefeature探针依赖的 SQL Server 功能特性feature: [ HADR ]rolerole当前用户所需的服务器角色role: [ bulkadmin, diskadmin ]permissionsecurable_classpermission[onsecurable_name]当前用户所需的特定权限server permission: [ ALTER TRACE ]选择建议结合 ProbeRequirements/README.md 的机制说明服务未安装/未运行时应跳过探针且不希望打扰用户 → 用service要求放在runFor中权限不足或角色缺失会导致探针查询失败 → 用role/permission要求放在requires中让用户看到警告功能特性未启用如 HADR时探针无意义 → 用feature要求放在runFor中静默跳过需要把服务信息写入检查消息或条件表达式 → 声明service要求后即可使用attr::service::*自动变量。七、更多参考探针要求的完整机制requires与runFor的区别、各要求类型的总览ProbeRequirements/README.mdattr::service::*自动变量定义与完整示例AutomaticVariables/AttrService.md探针实现的属性总览implementation、requires、runFor、target、typeProbe.md规则与探针的关系、检查清单构建流程RulesandProbes.md默认规则集中service要求的实际生产用例AgentSvcStoped、BrowserSvcStoped、RsSvcStoped等规则DefaultRuleset.csv赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐SQL Assessment API 探针特性要求Feature Requirement实战指南以 HADR 为例理解 requires 与 runForSQL Assessment API 探针特性要求Feature Requirement实战指南以 HADR 为例理解 requires 与 runFor示例工程数据库教程后端深入解析 SQL Assessment API 的 AzMetadata 探针通过 IMDS 元数据评估 Azure VM 上的 SQL Server深入解析 SQL Assessment API 的 AzMetadata 探针通过 IMDS 元数据评估 Azure VM 上的 SQL Server SQL示例工程数据库教程后端SQL Assessment API 自定义规则实战深入理解与使用 attr::service:: 服务自动变量SQL Assessment API 自定义规则实战深入理解与使用 attr::service:: 服务自动变量 导读 本文围绕 SQL Assessment示例工程数据库教程后端上一篇nlux社区贡献指南如何参与开源项目并提交PR下一篇深入理解Iterative Puzzle压缩框架NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-BF16背后的黑科技创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考